Bind/Display 在 RadGrid 的 "Edit" 模式下,两个不同的列数据一起放在特定 Id 的下拉列表中
Bind/Display the two different columns data together inside a Dropdown for a particluar Id in "Edit" mode of RadGrid
我在 Telerik RadGrid 中有 4 列
1) Account Code (仅在"Edit"和"Add"模式下显示的列-下拉)
2) 账户描述
3) 金额
4) 备注
下面是我使用的"Add"模式代码:
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();
}
"Account code" 列仅在 RadGrid 的 "Add" 和 "Edit" 模式下显示。这是一个下拉列表,我必须在其中将 2 个值绑定在一起,即帐户代码 + 帐户描述,并且必须将其显示并保存在数据库的单独列中。 (即帐户代码列中的帐户代码值和描述列中的帐户描述值)
现在我的要求是: 在做 "Edit" 时,我想 bind/display "Account code" 列数据和 "Account Description" 列数据一起放在 Dropdown 中,它保存在数据库中用于特定 ID。就像我们在编辑时绑定下拉列表一样。
编辑下拉项后,数据将保存到数据库的两个不同列,就像我在添加记录时所做的那样。
只是我不知道如何在执行 "Edit" 时 display/bind 在下拉列表中将两个不同的列数据放在一起。
请提出一些解决方案。
我希望我能把我的要求说清楚。
提前致谢。
嗯..清除你对这个问题的想法。
您使用的是什么类型的数据绑定?是否是高级数据绑定/sqldatasource 数据绑定?
无论如何,你的网格中有四列!所以像下面这样更改您的 select 查询。
SELECT accountcode, accountdesc, amount, remark, convert(varchar(20),accountcode)+' '+accountdesc as accdetail FROM YOURTABLENAME
<-- 记下accdetails.
我将字段 accountcode
和 accountdesc
连接为 accdetail( 为空 space)。
所以现在你的网格有 5 行。 在该 accdetail 列中使用 Visible="false"
隐藏 gridview 中的第五行。
不要修改帐户代码列。
仅在下拉列表中进行更改。
<asp:DropDownList ID="ddlAccdetail" DataTextField="accdetail" DataValueField="accdetail" runat="server"/>
现在下拉菜单将在编辑模式下将内容显示为 accountcode accountdesc
。
在 Insert 上,执行以下代码更改
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
字段中有任何空 space,则需要更改 Empty space 到任何特殊字符,如 ( - , * , / ,)
我在 Telerik RadGrid 中有 4 列
1) Account Code (仅在"Edit"和"Add"模式下显示的列-下拉)
2) 账户描述
3) 金额
4) 备注
下面是我使用的"Add"模式代码:
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();
}
"Account code" 列仅在 RadGrid 的 "Add" 和 "Edit" 模式下显示。这是一个下拉列表,我必须在其中将 2 个值绑定在一起,即帐户代码 + 帐户描述,并且必须将其显示并保存在数据库的单独列中。 (即帐户代码列中的帐户代码值和描述列中的帐户描述值)
现在我的要求是: 在做 "Edit" 时,我想 bind/display "Account code" 列数据和 "Account Description" 列数据一起放在 Dropdown 中,它保存在数据库中用于特定 ID。就像我们在编辑时绑定下拉列表一样。
编辑下拉项后,数据将保存到数据库的两个不同列,就像我在添加记录时所做的那样。
只是我不知道如何在执行 "Edit" 时 display/bind 在下拉列表中将两个不同的列数据放在一起。 请提出一些解决方案。
我希望我能把我的要求说清楚。 提前致谢。
嗯..清除你对这个问题的想法。
您使用的是什么类型的数据绑定?是否是高级数据绑定/sqldatasource 数据绑定?
无论如何,你的网格中有四列!所以像下面这样更改您的 select 查询。
SELECT accountcode, accountdesc, amount, remark, convert(varchar(20),accountcode)+' '+accountdesc as accdetail FROM YOURTABLENAME
<-- 记下accdetails.
我将字段 accountcode
和 accountdesc
连接为 accdetail( 为空 space)。
所以现在你的网格有 5 行。 在该 accdetail 列中使用 Visible="false"
隐藏 gridview 中的第五行。
不要修改帐户代码列。
仅在下拉列表中进行更改。
<asp:DropDownList ID="ddlAccdetail" DataTextField="accdetail" DataValueField="accdetail" runat="server"/>
现在下拉菜单将在编辑模式下将内容显示为 accountcode accountdesc
。
在 Insert 上,执行以下代码更改
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
字段中有任何空 space,则需要更改 Empty space 到任何特殊字符,如 ( - , * , / ,)