ASP.NET Telerik RadGrid如何将数据库数据存入隐藏字段并正确取值
方案1:使用RadGrid内置DataKey存储(最推荐)
这是Telerik RadGrid存储隐藏字段的官方标准方案,无需额外定义列,数据不会丢失也不会冗余渲染到前端:
- 在aspx的RadGrid控件标签中添加
DataKeyNames属性,声明需要存储的隐藏字段:
<telerik:RadGrid ID="RadGridViewCustomer" runat="server" DataKeyNames="CustomerId,CustomerSecondaryId"> <!-- 其余原有配置保持不变 --> </telerik:RadGrid>
- CodeBehind中直接通过
GetDataKeyValue方法取值:
string customerSecondaryId = dataItem.GetDataKeyValue("CustomerSecondaryId")?.ToString();
方案2:修正隐藏列定义
你之前取值为空的核心原因是用错了列类型:GridClientSelectColumn是专门用于渲染行多选复选框的特殊列,不会绑定数据源字段。改用GridBoundColumn即可:
- aspx中定义正确的隐藏绑定列:
<telerik:GridBoundColumn DataField="CustomerSecondaryId" UniqueName="CustomerSecondaryId" Visible="false" />
- 原有取值逻辑无需修改即可正常拿到数据:
string customerSecondaryId = dataItem["CustomerSecondaryId"].Text;
方案3:模板列内嵌隐藏字段(如需前端JS也能访问该值时选用)
如果需要前端JavaScript也能读取该字段,可以在模板列中嵌入ASP.NET隐藏控件:
- aspx中添加模板列:
<telerik:GridTemplateColumn Visible="false"> <ItemTemplate> <asp:HiddenField ID="hfCustomerSecondaryId" runat="server" Value='<%# Eval("CustomerSecondaryId") %>' /> </ItemTemplate> </telerik:GridTemplateColumn>
- CodeBehind中通过控件查找取值:
HiddenField hf = (HiddenField)dataItem.FindControl("hfCustomerSecondaryId"); string customerSecondaryId = hf.Value;
内容的提问来源于stack exchange,提问作者Greg
相关产品推荐
相关产品推荐

