2012-01-23 5 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> 

で、私のインデクスチェンジイベントが

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見ることができていないです更新パネルのしたがって、値を割り当てると、クライアントマシンには反映されません。隠しフィールドを含むようにパネルの範囲を広げてから、試してみてください。

ORあなたはASP.netフォーラムから

Here is a small tutorial on update panel (MSDN)

thisソリューションを試すことができますが、これはあなたのお役に立てば幸いです。

+0

このオプションを試してみましょう! – Chintan

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

あなたが背後にあるコードからhdlocにアクセスすることができない場合は、どちらかaspx.designer.csにVisual Studioによって追加されていません(元の値に戻し、それを削除しようとし、それを再度追加またはIDを変更して)隠しフィールドが別のバインディングコントロールの他のテンプレートに配置されている場合は、ctrl.FindControl( "hdloc")を使用してHiddenFieldにキャストする必要があります。
また、この隠しフィールドは、UpdateMode = "Always"のUpdatePanelに配置する必要があります。

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

私はあなたがそれを使用するようにEditItemTemplateの内部にあるため、ddlLocationは、背後にあるコードの上に表示されていないのでddlLocation.SelectedItem.Textが、それは、コンパイルエラーを与えることを確信しています。

関連する問題