c# - 在 Gridview 中设置和检索 HiddenField 的值

标签 c# asp.net gridview hidden-field

我有一个嵌入到 GridView 中的自定义控件。该控件需要一个值(来自 SqlDataSource1 的 Id 列),该值包含在 gridview 为其构造函数绑定(bind)到的同一数据表中。

我遇到的问题是我不明白如何设置隐藏字段的值。该字段的数据类型是 Guid。

ASPX:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="GridUserControl.ascx.cs" Inherits="CustomNavi_V1_ControlTest.CustomControls.GridUserControl" %>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:srsfwa1_scrambledConnectionString %>" SelectCommand="SELECT [ApplicantId], [ValleyId], [SchoolId], [StatusId], [StudentID], [InterviewDate], [Id] FROM [tblSubmissions]"></asp:SqlDataSource>
<asp:GridView ID="StudentGridView" DataKeysNames="Submission" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" OnDataBound ="StudentGridView_OnDataBind">
<Columns>
    <asp:BoundField DataField="ApplicantId" HeaderText="ApplicantId" SortExpression="ApplicantId" />
    <asp:BoundField DataField="ValleyId" HeaderText="ValleyId" SortExpression="ValleyId" />
    <asp:BoundField DataField="SchoolId" HeaderText="SchoolId" SortExpression="SchoolId" />
    <asp:BoundField DataField="StudentID" HeaderText="StudentID" SortExpression="StudentID" />
    <asp:BoundField DataField="InterviewDate" HeaderText="InterviewDate" SortExpression="InterviewDate" />
    <asp:BoundField DataField="StatusId" HeaderText="StatusId" SortExpression="StatusId" visible="true"/>
    <asp:BoundField DataField="Id" Visible ="false" />
    <asp:TemplateField>
        <ItemTemplate>
            <asp:HiddenField ID="HiddenField" DataField="SubmissionID" runat="server" Value=""/>
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField Visible="true" HeaderText="Ed's Fabulous Custom Control!!" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center">
        <ItemTemplate>

        </ItemTemplate>
    </asp:TemplateField>

</Columns>
</asp:GridView>

隐藏字段:

protected void AddCustomControl()
{
    int iterator = 0;
    foreach (GridViewRow row in StudentGridView.Rows)
    {
        if (row.RowType == DataControlRowType.DataRow)
        {
            //StudentGridView.HiddenField.value= StudentGridView.
            //HiddenField hiddenField = this.StudentGridView1.FindControl("
            Guid submissionIdGuid = (Guid)hiddenField.Value; // ("SubmissionID").Value;
            string controlID = "NavigatorControlID" + iterator.ToString();
            string submissionID = row.Cells[6].Text;  // tblSubmissions Id field
            string statusId = row.Cells[5].Text; // tblSubmissions StatusId field
            connection = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["srsfwa1_scrambledConnectionString"].ToString());

            CustomNavi_V1._1.CustomNavi_V1 navigator = new CustomNavi_V1._1.CustomNavi_V1(submissionID, statusId);
            navigator.ID = controlID;
            navigator.SubmissionID = submissionIdGuid;
            navigator.BackButtonImage = "Images/back_button.png";
            navigator.ForwardButtonImage = "Images/fwd_button.png";

            row.Cells[7].Controls.Add(navigator);
            iterator++;
        }
    }
}

最佳答案

要从隐藏字段中获取 GUID,它将类似于:

HiddenField hiddenField = (HiddenField)row.FindControl("HiddenField");
Guid submissionIdGuid =  new Guid();
Guid.TryParse(hiddenField.Value, out submissionIdGuid );

并设置,

hiddenField.Value = submissionIdGuid.ToString();

关于c# - 在 Gridview 中设置和检索 HiddenField 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19467310/

相关文章:

c# - System.IdentityModel.Policy.IAuthorizationPolicy 过时了吗?

c# - 在 ASP.NET 中验证 Oracle 用户

HTML 表格边框不适用于 IE10

asp.net - 如何在“ GridView ”列标题上的鼠标悬停时添加工具提示

c# - 如何用gridview控件的值填充文本框?

c# - 如何从 TFS 获取所有集合

c# - 使用绑定(bind)到类的单击事件的上下文

c# - 有没有办法强制将所有引用的程序集加载到应用程序域中?

javascript - 按类型获取元素然后禁用

.net - asp.net 下拉菜单不显示 IE 中的所有文本,当文本太长时,其余文本会被 chop