在"Edit"中为特定的Id绑定/显示两个不同的列数据在一个下拉菜单中RadGrid模式

本文关键字:quot 一个 RadGrid 模式 下拉菜单 数据 显示 Edit Id 绑定 两个 | 更新日期: 2023-09-27 18:01:41

我在Telerik RadGrid中有4列
1)帐户代码(仅在"编辑"answers"添加"模式下的下拉列表中显示)
2)账户描述
3)数量
4)评论

下面是我使用的"添加"模式代码: HTML代码:

    <mastertableview ShowHeadersWhenNoRecords="true" autogeneratecolumns="false" datakeynames="AccountCodeID" InsertItemDisplay="Top"
                        insertitempageindexaction="ShowItemOnCurrentPage" ShowFooter="True" CommandItemDisplay="Top">                                   
                             <Columns> 
                                 <telerik:GridEditCommandColumn></telerik:GridEditCommandColumn> 
                                 <telerik:GridTemplateColumn UniqueName="AccountCode" HeaderText="Account Code">
                                    <ItemTemplate>
                                      <asp:Label ID="lblAcCode" Text='<%# Eval("AccountCode") %>' runat="server"></asp:Label>
                                    </ItemTemplate>
                                    <EditItemTemplate>
                                      <asp:DropDownList ID="ddlAcCode" DataTextField="AccountDescription" DataValueField="AccountCodeID" runat="server"/> 
                                    </EditItemTemplate>
                                 </telerik:GridTemplateColumn>
                                 <telerik:GridBoundColumn DataField="AccountDescription" HeaderText="Description" UniqueName="AccountDescription" SortExpression="AccountDescription" InsertVisiblityMode="AlwaysHidden" ReadOnly="true" ></telerik:GridBoundColumn>
                                 <telerik:GridBoundColumn aggregate="SUM" DataField="Amount" HeaderText="Amount" FooterText="Total : " UniqueName="Amount" SortExpression="Amount"></telerik:GridBoundColumn>
                                 <telerik:GridBoundColumn DataField="Remark" HeaderText="IFCA Remark" UniqueName="Remark" SortExpression="Remark">
                                 </telerik:GridBoundColumn>    
                                 <telerik:GridButtonColumn CommandName="Delete" Text="Delete" UniqueName="DeleteColumn"></telerik:GridButtonColumn>                                                                            
                          </Columns>
                          <EditFormSettings>
                           <EditColumn ButtonType="ImageButton" />
                          </EditFormSettings>
                          <CommandItemSettings AddNewRecordText="Add new record" RefreshText="Refresh"></CommandItemSettings>
</mastertableview>
c#代码:

protected void RGGSTAcCode_ItemDataBound(object sender, GridItemEventArgs e)
    {
        if (e.Item is GridEditableItem && e.Item.IsInEditMode)
        {
            GridEditableItem item = e.Item as GridEditableItem;
            string CompanyCode = ddlCompany.SelectedValue.ToString();
            DropDownList list = item.FindControl("ddlAcCode") as DropDownList;
            list.DataTextField = "AccountDescription";
            list.DataValueField = "AccountCodeID";
            list.DataSource = GetAccCode(CompanyCode);
            list.DataBind();
            list.Items.Insert(0, "- Select -");
        }       
    }
protected void RGGSTAcCode_InsertCommand(object sender, GridCommandEventArgs e)
    {
        GridEditableItem item = e.Item as GridEditableItem;
        DropDownList accountCode = item.FindControl("ddlAcCode") as DropDownList;
        string SelectedAccCode = accountCode.SelectedItem.Text;
        //split dropdown 2 vales
        string accCode = SelectedAccCode.Substring(0, SelectedAccCode.IndexOf('-')).Trim(); //getting a/c code
        string accDesc = SelectedAccCode.Substring(SelectedAccCode.IndexOf('-') + 1).Trim(); //getting a/c descr
        InsertAccountCode(new Guid(TempGUID.Text), accCode, accDesc);
        BindGrid();
        RGGSTAcCode.Rebind();
    }

"账号代码"栏只在RadGrid的"添加"answers"编辑"模式下显示。这是一个下拉菜单,我必须将2个值绑定在一起,即,帐户代码+帐户描述,并必须显示并保存在数据库的单独列。(即"Account Code"列中的"Account Code"值和"Description"列中的"Account Description"值)

现在我的要求是:而做"编辑",我想绑定/显示"帐户代码"列数据和"帐户描述"列数据一起下拉框内,这是保存在数据库中的特定ID。就像我们在Edit.

和后来编辑下拉项后,数据将被保存到DB的两个不同的列,因为我正在添加记录。

只有我不知道如何在做"编辑"时在下拉框中显示/绑定两个不同的列数据。请提出解决方案。

我希望我能把我的要求说清楚。

在"Edit"中为特定的Id绑定/显示两个不同的列数据在一个下拉菜单中RadGrid模式

嗯…理清你对这个问题的想法。

你使用的是什么类型的数据绑定?是否advanced databind/sqldatasource databind?

无论如何,你的网格中有四列!所以像下面这样改变你的select查询。

SELECT accountcode, accountdesc, amount, remark, convert(varchar(20),accountcode)+' '+accountdesc as accdetail FROM YOURTABLENAME<——>记下accdetails

我将字段accountcodeaccountdesc连接为accdetail (与空白空间)。现在你的网格有5行。在该accdetail列中使用Visible="false"隐藏 gridview中的第五行。不要修改accountcode列。
只在下拉列表中进行更改

 <asp:DropDownList ID="ddlAccdetail" DataTextField="accdetail" DataValueField="accdetail" runat="server"/>

现在下拉菜单将显示内容为编辑模式下的accountcode accountdesc

上插入,执行以下代码更改

protected void RGGSTAcCode_InsertCommand(object sender, GridCommandEventArgs e)
{
  GridEditableItem item = e.Item as GridEditableItem;
  DropDownList ddlAccdetail = item.FindControl("ddlAccdetail") as DropDownList;
  
  string Accdetail = ddlAccdetail.SelectedItem.Text;
  string accCode=Accdetail.Split(' ')[0];   //Splitting the string 
  string accDesc=Accdetail.Split(' ')[1];   //with that added empty space
  InsertAccountCode(new Guid(TempGUID.Text), accCode, accDesc);
  BindGrid();
  RGGSTAcCode.Rebind();
}
就是这样,希望它能起作用。但是请记住,如果在默认情况下accountcodeaccountdesc字段中有任何空白,那么您需要将空白更改为任何特殊字符,如(-, *,/,)