FineUI 官方论坛

标题: (FineUI+动软)在实现多表关联新增时如何获取外键? [打印本页]

作者: alfly008    时间: 2014-4-11 20:18
标题: (FineUI+动软)在实现多表关联新增时如何获取外键?
本帖最后由 alfly008 于 2014-4-11 20:51 编辑

FineUI界面的图,在最下面。说明:每个gird对应一个数据库表,两张表AllocIn为配送表,AllocInDet为配送详情表,以AllocIn的AllocInID做为外键。
每一个新增/编辑都对应一个文件,分别为xxx_new  xxx_edit。

第二个明细表的窗体的前台:
  1. <body>
  2.     <form id="form1" runat="server">
  3.     <x:PageManager ID="PageManager1" AutoSizePanelID="Panel1" runat="server" />
  4.     <x:Panel ID="Panel1" runat="server" BodyPadding="5px" EnableLargeHeader="false"
  5.         EnableBackgroundColor="true" ShowBorder="false" Layout="VBox" BoxConfigAlign="Stretch"
  6.         BoxConfigPosition="Start" ShowHeader="false" Title="配送接收明细">
  7.         <Toolbars>
  8.             <x:Toolbar ID="Toolbar1" runat="server">
  9.                 <Items>
  10.                     <x:Button ID="btnClose" Icon="SystemClose" EnablePostBack="false" runat="server"
  11.                         Text="关闭">
  12.                     </x:Button>
  13.                     <x:ToolbarSeparator ID="ToolbarSeparator1" runat="server">
  14.                     </x:ToolbarSeparator>
  15.                     <x:Button ID="btnSaveClose" ValidateForms="SimpleForm1" Icon="SystemSaveClose"
  16.                         OnClick="btnSaveClose_Click" runat="server" Text="保存后关闭">
  17.                     </x:Button>
  18.                 </Items>
  19.             </x:Toolbar>
  20.         </Toolbars>
  21.         <Items>
  22.            <x:Grid ID="Grid2" runat="server" BoxFlex="1" ShowBorder="true" ShowHeader="false"
  23.                 EnableCheckBoxSelect="true" EnableRowNumber="true" DataKeyNames="CK_AllocInDetID" AllowSorting="true"
  24.                 OnSort="Grid2_Sort" SortColumnIndex="0" SortDirection="DESC" AllowPaging="true"
  25.                 IsDatabasePaging="true" OnPreDataBound="Grid2_PreDataBound" OnRowCommand="Grid2_RowCommand"
  26.                 OnPageIndexChange="Grid2_PageIndexChange">
  27.                 <Toolbars>
  28.                     <x:Toolbar ID="Toolbar2" runat="server">
  29.                         <Items>
  30.                             <%--<x:Button ID="btnDeleteSelected" Icon="Delete" runat="server" Text="删除选中记录" OnClick="btnDeleteSelected_Click">
  31.                             </x:Button>--%>
  32.                             <x:ToolbarFill ID="ToolbarFill1" runat="server">
  33.                             </x:ToolbarFill>
  34.                             <x:Button ID="btnNew2" runat="server" Icon="Add" EnablePostBack="false" Text="新增配送货品">
  35.                             </x:Button>
  36.                         </Items>
  37.                     </x:Toolbar>
  38.                 </Toolbars>
  39.                 <Columns>
  40.                     <x:BoundField DataField="CK_ProductNo" SortField="CK_ProductNo" Width="100px" HeaderText="货品编号" />
  41.                     <x:BoundField DataField="CK_ProductTypeName" SortField="CK_ProductTypeName" Width="100px" HeaderText="货品类型" />
  42.                     <x:BoundField DataField="CK_ProductName" SortField="CK_ProductName" Width="100px" HeaderText="品名" />
  43.                     <x:BoundField DataField="CK_ProductSizeNo" SortField="CK_ProductSizeNo" Width="50px" HeaderText="尺码" />
  44.                     <x:BoundField DataField="CK_ProductNum" SortField="CK_ProductNum" ExpandUnusedSpace="true" HeaderText="数量" />

  45.                     <x:WindowField ColumnID="editField" TextAlign="Center" Icon="Pencil" ToolTip="编辑" WindowID="Window2"
  46.                         Title="编辑" DataIFrameUrlFields="CK_AllocInDetID" DataIFrameUrlFormatString="~/CK_AllocInDet_edit.aspx?id={0}"
  47.                         Width="50px" />
  48.                     <x:LinkButtonField ColumnID="deleteField" TextAlign="Center" Icon="Delete" ToolTip="删除" ConfirmText="确定删除此记录?"
  49.                         ConfirmTarget="Top" CommandName="Delete" Width="50px" />
  50.                 </Columns>
  51.             </x:Grid>
  52.         </Items>
  53.     </x:Panel>
  54.     <x:Window ID="Window2" CloseAction="Hide" runat="server" IsModal="true" Hidden="true" Target="Top"
  55.         EnableResize="true" EnableMaximize="true" EnableIFrame="true" IFrameUrl="about:blank"
  56.         Width="400px" Height="250px" OnClose="Window1_Close">
  57.     </x:Window>
  58.     </form>
  59. </body>
复制代码
后台部分代码:
  1.         private void BindGrid()
  2.         {
  3.             DataSet ds;

  4.             int id = GetQueryIntValue("id");
  5.             TSM.Model.CK_AllocIn modelCK_AllocIn = m_bllCK_AllocIn.GetModel(id);

  6.             string searchText = modelCK_AllocIn.CK_AllocInID.ToString();
  7.             string strWhere = "CK_AllocInID = '" + searchText + "'";

  8.             ds = m_bllCK_AllocInDet.GetList(strWhere);
复制代码





  最后一个新增窗体的后面代码:
  1.        private void LoadData()
  2.         {


  3.             btnClose.OnClientClick = ActiveWindow.GetHideReference();

  4.             DataSet ds = m_bllCK_Product.GetList("");
  5.             ddlPNo.DataTextField = "CK_ProductNo";
  6.             ddlPNo.DataValueField = "CK_ProductID";
  7.             ddlPNo.DataSource = ds.Tables[0];
  8.             ddlPNo.DataBind();
  9.             ddlPNo.SelectedIndex = 0;

  10.             int id = GetQueryIntValue("id");
  11.             TSM.Model.CK_AllocInDet modelCK_AllocInDet = m_bllCK_AllocInDet.GetModel(id);

  12.             if (modelCK_AllocInDet == null)
  13.             {
  14.                 // 参数错误,首先弹出Alert对话框然后关闭弹出窗口
  15.                 Alert.Show("参数错误!", String.Empty, ActiveWindow.GetHideReference());
  16.                 return;
  17.             }

  18.             tbxSize.Text = modelCK_AllocInDet.CK_ProductSizeNo;
  19.             tbxPNum.Text = modelCK_AllocInDet.CK_ProductNum.ToString();
  20.             ddlPNo.SelectedValue = modelCK_AllocInDet.CK_ProductID.ToString();
  21.   

  22.         }

  23.         #endregion

  24.         #region Events

  25.         protected void btnSaveClose_Click(object sender, EventArgs e)
  26.         {
  27.             int id = GetQueryIntValue("id");
  28.             TSM.Model.CK_AllocInDet modelCK_AllocInDet = m_bllCK_AllocInDet.GetModel(id);
  29.             modelCK_AllocInDet.CK_ProductSizeNo = tbxSize.Text.Trim();
  30.             modelCK_AllocInDet.CK_ProductNum = int.Parse(tbxPNum.Text.Trim());
  31.             modelCK_AllocInDet.CK_ProductID = int.Parse(ddlPNo.SelectedValue);

  32. <font color="#ff0000">            m_bllCK_AllocInDet.Add(modelCK_AllocInDet);</font>

  33.             //FineUI.Alert.Show("保存成功!", String.Empty, FineUI.Alert.DefaultIcon, FineUI.ActiveWindow.GetHidePostBackReference());
  34.             PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
  35.         }
复制代码
上面添加时,总是报错,说是AllocInID冲突,调试时modelCK_AllocInDet.AllocInID=0 看来是要关联上值,可是不知道如何去取。又不是同一个文件

求大佬们指教,拜谢。





作者: alfly008    时间: 2014-4-11 20:26
补充一下,代码结构图:




欢迎光临 FineUI 官方论坛 (https://fineui.com/BBS/) Powered by Discuz! X3.4