2

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>

私のindexchangeイベントは

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

}

そして私の隠しフィールドは

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

3 に答える 3

0

HiddenFieldコードから、は更新パネルの一部ではないことがわかります。したがって、値を割り当てると、クライアントマシンには反映されません。パネルのスコープを拡大して非表示フィールドを含めてから、試してください。

または、ASP.netフォーラムからこのソリューションを試すことができます

これは、更新パネル(MSDN)に関する小さなチュートリアルです。

これがお役に立てば幸いです。

于 2012-01-23T12:16:12.230 に答える
0
GridViewRow cancel = (GridViewRow)GridView1.Rows[e.RowIndex];
Label lbldeleteID = (Label)cancel.FindControl("lblid");
于 2012-01-23T12:18:45.163 に答える
0

コード ビハインドから hdloc にアクセスできない場合は、Visual Studio によって aspx.designer.cs に追加されていないか (削除して再度追加するか、ID を変更してから元の値に戻してください)、非表示フィールドが次の場所に配置されています。つまり、ctrl.FindControl("hdloc") を使用してから HiddenField にキャストする必要があります。
また、この隠しフィールドを UpdateMode="Always" で UpdatePanel に配置する必要があります。

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

ddlLocation.SelectedItem.Text を使用すると、EditItemTemplate の内部にあるため、ddlLocation がコード ビハインドに表示されないため、コンパイル エラーが発生すると確信しています。

于 2012-01-23T12:50:52.220 に答える