<asp:HiddenField ID="hidapplyuid" runat="server" EnableViewState="true" />
<asp:TemplateField Visible="false">
<ItemTemplate>
<asp:Label ID="UID" CssClass="" runat="server" Text='<%#Eval("candUID")%>'></asp:Label>
<asp:Label ID="JobApplyUID" CssClass="" runat ="server" Text='<%#Eval("jobApplyUID")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
нужно привязать JobApplyUID к скрытому полю на странице cs... пожалуйста, помогите мне...
Вам нужно поместить HiddenField
внутри TemplateField
, иначе он не будет привязан к базе данных, поскольку GridView
, DetailsView
и т.д. Не смогут получить к нему доступ
Измените это
<asp:HiddenField ID="hidapplyuid" runat="server" EnableViewState="true" />
<asp:TemplateField Visible="false">
<ItemTemplate>
<asp:Label ID="UID" CssClass="" runat="server" Text='<%#Eval("candUID")%>'></asp:Label>
<asp:Label ID="JobApplyUID" CssClass="" runat ="server" Text='<%#Eval("jobApplyUID")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
Что-то вроде этого. Переместите его на TemplateField
где-нибудь, например
<asp:TemplateField>
<ItemTemplate>
<%-- Move hidden variable inside of the template, else it cannot be databound --%>
<asp:HiddenField ID="hidapplyuid" runat="server" Value='<%#Eval("jobApplyUID")%>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField Visible="false">
<ItemTemplate>
<asp:Label ID="UID" CssClass="" runat="server" Text='<%#Eval("candUID")%>'></asp:Label>
<asp:Label ID="JobApplyUID" CssClass="" runat ="server" Text='<%#Eval("jobApplyUID")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
Оценка элементов управления из gridview очень проста, попробуйте эту демонстрацию следующим образом. Добавьте новую тестовую страницу в свой проект. Позволяет иметь страницу ASPX, как показано ниже...
<div>
Job Apply GUID : <asp:Label runat="server" ID="uxJobApplyUID"></asp:Label>
<asp:GridView ID="uxGrid" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField HeaderText="JobApply UID">
<ItemTemplate>
<asp:HiddenField ID="uxHiddenJobApplyUID" runat="server" Value='<%#Eval("jobApplyUID") %>' />
<asp:Button ID="uxShowDetails" runat="server" Text="Show Data" OnClick="uxShowDetails_Click" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
И код позади будет следующим...
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
DataTable dt = new DataTable();
dt.Columns.Add("jobApplyUID", typeof(string));
dt.Rows.Add(System.Guid.NewGuid().ToString());
dt.Rows.Add(System.Guid.NewGuid().ToString());
dt.Rows.Add(System.Guid.NewGuid().ToString());
dt.Rows.Add(System.Guid.NewGuid().ToString());
dt.Rows.Add(System.Guid.NewGuid().ToString());
uxGrid.DataSource = dt;
uxGrid.DataBind();
}
}
protected void uxShowDetails_Click(object sender, EventArgs e)
{
this.uxJobApplyUID.Text = (((sender as Button).NamingContainer as GridViewRow).FindControl("uxHiddenJobApplyUID") as HiddenField).Value;
}
Если вы попробуете это, вы можете получить значение из любого элемента управления, присутствующего в gridview.
Value='<%#Eval("jobApplyUID")%>'
?