RadGrid-在多个数据库列中如果不为null的单元格中输入值

问题描述

所以我有一个数据库,其中包含信息和3列不同类型的列(电子邮件,十进制值,位​​)

enter image description here

在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();
                }
            }
        }
    }

结果很好! enter image description here

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...