C# 在gridview的boundfield中找不到值?

C# 在gridview的boundfield中找不到值?,c#,asp.net,gridview,hiddenfield,C#,Asp.net,Gridview,Hiddenfield,我试图在dropdownlist的indexchange事件中将值分配给hiddenfield!事实上,问题是当我试图更新我的记录时,我找不到那个隐藏字段的值!请给我解决方案或建议任何其他选项!谢谢大家! 我的网格视图是 <asp:TemplateField HeaderText="LocCode" SortExpression="LocCode"> <EditItemTemplate> <ajax:UpdatePanel ID="upEdits

我试图在dropdownlist的indexchange事件中将值分配给hiddenfield!事实上,问题是当我试图更新我的记录时,我找不到那个隐藏字段的值!请给我解决方案或建议任何其他选项!谢谢大家!

我的网格视图是

<asp:TemplateField HeaderText="LocCode" SortExpression="LocCode">
   <EditItemTemplate>
       <ajax:UpdatePanel ID="upEditsLocation" runat="server" UpdateMode="Conditional">
           <ContentTemplate>
              <asp:DropDownList ID="ddlLocation" runat="server" 
                 DataSourceID="sdsLocation" 
                 OnDataBound="ddlLocation_DataBound"  
                 DataValueField="LocCode" AppendDataBoundItems="false" 
                 DataTextField="LocCode" 
                 AutoPostBack="true" 
                 onselectedindexchanged="ddlLocation_SelectedIndexChanged">
              </asp:DropDownList>
              <asp:SqlDataSource ID="sdsLocation" runat="server" ConnectionString="<%$ ConnectionStrings:ccConnString %>"
                 ProviderName="<%$ ConnectionStrings:CCConnString.ProviderName %>" SelectCommand="Select LocCode from Location">
              </asp:SqlDataSource>
           </ContentTemplate>
       </ajax:UpdatePanel>
   </EditItemTemplate>
   <ItemTemplate>
       <asp:Label ID="lblLocation" runat="server" Text='<%# Bind("LocCode") %>'>
       </asp:Label>
   </ItemTemplate>
</asp:TemplateField>
我隐藏的领域是

<asp:HiddenField ID="hdloc" runat="server" />

从代码中,我可以看到
HiddenField
不是更新面板的一部分。因此,若您给它赋值,它将不会反映在客户机上。增加面板的范围以包括隐藏字段,然后重试

或者您也可以尝试ASP.net论坛上的解决方案


希望这对您有所帮助。

从代码中我可以看到
隐藏字段
不是您的更新面板的一部分。因此,若您给它赋值,它将不会反映在客户机上。增加面板的范围以包括隐藏字段,然后重试

GridViewRow cancel = (GridViewRow)GridView1.Rows[e.RowIndex];
Label lbldeleteID = (Label)cancel.FindControl("lblid");
或者您也可以尝试ASP.net论坛上的解决方案


希望这对您有所帮助。

如果您无法从代码隐藏中访问hdloc,则可能是由于Visual Studio未在aspx.designer.cs上添加hdloc(请尝试删除它并重新添加,或者更改id然后重新添加为原始值),也可能是由于隐藏字段被放置在另一个绑定控件的其他模板中,这意味着您需要使用ctrl.FindControl(“hdloc”)然后投给希登菲尔德。
GridViewRow cancel = (GridViewRow)GridView1.Rows[e.RowIndex];
Label lbldeleteID = (Label)cancel.FindControl("lblid");

此外,还需要使用UpdateMode=“Always”将此隐藏字段放入UpdatePanel中。


我确信ddlLocation.SelectedItem.Text与您使用的一样,会出现编译错误,因为ddlLocation在代码隐藏中不可见,因为它位于EditItemTemplate内部。

如果无法从代码隐藏中访问hdloc,则Visual Studio也不会在aspx.designer.cs上添加(尝试删除它并将其添加回或更改id,然后返回原始值)或隐藏字段放置在另一个绑定控件的其他模板中,这意味着您需要使用ctrl.FindControl(“hdloc”)然后强制转换为HiddenField。
此外,还需要使用UpdateMode=“Always”将此隐藏字段放入UpdatePanel中。


我确信ddlLocation.SelectedItem.Text,就像您使用它一样,会产生编译错误,因为ddlLocation在代码隐藏中不可见,因为它位于EditItemTemplate内部。

隐藏字段放在哪里?在数据绑定控件之外?是的!但是值分配给隐藏字段,但我无法访问代码隐藏!我不知道当我试图访问它时,实际问题是它给出了null!你不能访问hdloc或ddlocation吗?隐藏字段放在哪里?在你的数据绑定控制之外?是的!但是值分配给隐藏字段,但我不能访问它背后的代码!我不知道我试图访问它时的实际问题,它给出了null!你不能访问什么hdloc还是DDL位置?
protected void  ddlLocation_SelectedIndexChanged(object sender, EventArgs e)
{   
    hdloc.Value = (sender as DropDownList).SelectedItem.Text;
}