在"Edit"中为特定的Id绑定/显示两个不同的列数据在一个下拉菜单中RadGrid模式
本文关键字:quot 一个 RadGrid 模式 下拉菜单 数据 显示 Edit Id 绑定 两个 | 更新日期: 2023-09-27 18:01:41
我在Telerik RadGrid中有4列
1)帐户代码(仅在"编辑"answers"添加"模式下的下拉列表中显示)
2)账户描述
3)数量
4)评论
<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的两个不同的列,因为我正在添加记录。
只有我不知道如何在做"编辑"时在下拉框中显示/绑定两个不同的列数据。请提出解决方案。
我希望我能把我的要求说清楚。嗯…理清你对这个问题的想法。
你使用的是什么类型的数据绑定?是否advanced databind/sqldatasource databind?
无论如何,你的网格中有四列!所以像下面这样改变你的select查询。
SELECT accountcode, accountdesc, amount, remark, convert(varchar(20),accountcode)+' '+accountdesc as accdetail FROM YOURTABLENAME
<——>记下accdetails
我将字段accountcode
和accountdesc
连接为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();
}
就是这样,希望它能起作用。但是请记住,如果在默认情况下accountcode
或accountdesc
字段中有任何空白,那么您需要将空白更改为任何特殊字符,如(-, *,/,)