2012-01-23 63 views
2

我正在尝试在dropdownlist的indexchange事件上为hiddenfield赋值!其实问题是当我试图更新我的记录时,我无法找到隐藏字段的值!请给我解决方案或建议任何其他选项!谢谢 !在gridview中的boundfield中找不到值?

我的网格视图是

<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> 

和我indexchange事件是

protected void ddlLocation_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    hdloc.Value = ddlLocation.SelectedItem.Text; 

} 

我的隐藏字段是

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

隐藏字段放置在哪里?你的数据绑定控制之外? –

+0

是的!但值分配给隐藏的领域,但我不能访问它后面的代码!当我尝试访问它时,我不知道实际的问题它给null! – Chintan

+0

什么不能访问hdloc或ddlLocation? –

回答

0

从代码中,我可以看到HiddenField不是一部分你的更新面板。因此,如果您为其分配任何值,它将不会反映在客户端计算机上。增加面板的范围以包含隐藏字段,然后尝试。

或者你可以从ASP.net论坛尝试this解决方案

Here is a small tutorial on update panel (MSDN)

希望这有助于你。

+0

让我试试这个选项! – Chintan

0
GridViewRow cancel = (GridViewRow)GridView1.Rows[e.RowIndex]; 
Label lbldeleteID = (Label)cancel.FindControl("lblid"); 
0

如果你不能从后面的代码访问hdloc,无论是不是由Visual Studio上aspx.designer.cs加入(尝试删除,并重新添加它或改变ID,然后返回到原来的值)或者隐藏字段被放置在另一个绑定控件的其他模板中,这意味着您需要使用ctrl.FindControl(“hdloc”)然后将其转换为HiddenField。
此外,您还需要将此隐藏字段放入UpdatePanel并使用UpdateMode =“Always”。

protected void ddlLocation_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    hdloc.Value = (sender as DropDownList).SelectedItem.Text; 
} 

我敢肯定,ddlLocation.SelectedItem.Text,就像你使用它,它给一个编译错误,因为ddlLocation不上背后的代码可见,因为是EditItemTemplate模板内。

相关问题