问题描述
所以我有一个数据库,其中包含信息和3列不同类型的列(电子邮件,十进制值,位)
在Radgrid中,我最终将有一个名为“ Value”的可编辑列,理想情况下就是这样,无论数据库提供了我什么的单个可编辑值。一些int,string等 我在项目数据绑定GridBoundColumn with multiple DataFields上发现了一些东西,但无法将其包裹住并应用它。有人还提到了我看过但还不了解的模板...这是网格,目前我正试图在“值”列中显示一些内容。
<telerik:RadGrid ID="RadGrid1" runat="server"
OnDataBound="RadGrid1_DataBound"
OnItemDataBound="RadGrid1_ItemDataBound">
<MasterTableView AutoGenerateColumns="false" DataKeyNames="Group,DisplayName,SystemSetting,Description,value_string,value_decimal18_2,value_bit"
AllowSorting="true">
<GroupByExpressions>
<telerik:GridGroupByExpression>
<SelectFields>
<telerik:GridGroupByField FieldAlias="Group" FieldName="Group" />
</SelectFields>
<GroupByFields>
<telerik:GridGroupByField FieldName="Group" SortOrder="Ascending" />
</GroupByFields>
</telerik:GridGroupByExpression>
</GroupByExpressions>
<Columns>
<telerik:GridEditCommandColumn UniqueName="EditCOmmandColumn"></telerik:GridEditCommandColumn>
<telerik:GridBoundColumn UniqueName="Group" SortExpression="Group" HeaderText="Group" HeaderButtonType="TextButton" DataField="Group" Visible="false"></telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="DisplayName" SortExpression="DisplayName" HeaderText="Display Name" HeaderButtonType="TextButton" DataField="DisplayName"></telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="SystemSetting" SortExpression="SystemSetting" HeaderText="System Setting" HeaderButtonType="TextButton" DataField="SystemSetting"></telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="value" SortExpression="value_type" HeaderText="Value" HeaderButtonType="TextButton" DataField="Value"></telerik:GridBoundColumn><%--value_string,value_bit--%>
<telerik:GridBoundColumn UniqueName="Description" SortExpression="Description" HeaderText="Description" HeaderButtonType="TextButton" DataField="Description"></telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="ModifiedDate" SortExpression="ModifiedDate" HeaderText="Modified Time" HeaderButtonType="TextButton" DataField="ModifiedDate"></telerik:GridBoundColumn>
</Columns>
</MasterTableView>
</telerik:RadGrid>
解决方法
因此,我了解了如何执行此操作。我结束寻找event.Item.DataItem的DataRowView并将该名称与我想要插入的名称进行比较。然后,我做了一个if语句系列(因为我不喜欢switch语句)。我在数据库中有另外一列,描述了该行所代表的value_type。
protected void RadGrid1_ItemDataBound(object sender,GridItemEventArgs e)
{
if (e.Item is GridDataItem && e.Item != null)
{
GridDataItem item = (GridDataItem)e.Item;
DataRowView drv = (DataRowView)e.Item.DataItem;
if (drv["value_type"] != null)
{
if ((string)drv["value_type"] == "value_string")
{
item["Value"].Text = drv["value_string"].ToString();
}
else if ((string)drv["value_type"] == "value_bigint")
{
item["Value"].Text = drv["value_bigint"].ToString();
}
else if ((string)drv["value_type"] == "value_decimal18_2")
{
item["Value"].Text = drv["value_decimal18_2"].ToString();
}
else if ((string)drv["value_type"] == "value_bit")
{
item["Value"].Text = drv["value_bit"].ToString();
}
}
}
}