2011-07-08 14 views
1

私はそのようなものがあります:私はFindControl("select_list")lvList.FindControl("select_list")Request.Form["select_list"]を試してみました ...サーバー側のGetElementByID、asp.net?

<asp:ListView ID="lvList" runat="server"> 
    <LayoutTemplate> 
     <select id="select_list"> 
     <option value="-1"> 
      select one 
     </option> 
     <asp:PlaceHolder ID="itemPlaceHolder" runat="server" /> 
     </select> 
    </LayoutTemplate> 
    <ItemTemplate> 
     <option value="<%# Eval("code") %>"> 
     <%# Eval("Name") %> 
     </option> 
    </ItemTemplate> 
    </asp:ListView> 

をそして私はボタンが提出取得した後、サーバー側でselect_listにアクセスする - それらのどれも私のコントロールをバック与えませんでした。

JS getElementByIDのように、IDでコントロールを取得する方法はありますか?

ありがとうございました。

答えて

2

これは学術目的ですか?リストビューの使用に関する特定されている場合は、サーバーrunat="server"

0

あなたは

を使用してアクセスしてみてください、その後

<asp:ListView ID="lvList" runat="server"> 
<LayoutTemplate> 
    <select id="select_list" runat="server"> 
    <option value="-1"> 
     select one 
    </option> 
    <asp:PlaceHolder ID="itemPlaceHolder" runat="server" /> 
    </select> 
</LayoutTemplate> 
<ItemTemplate> 
    <option value="<%# Eval("code") %>"> 
    <%# Eval("Name") %> 
    </option> 
</ItemTemplate> 

を試してみて、属性runat =「server」を使用し、それを宣言する必要があり、それ自体のサーバーの表現を持つように制御するためには FindControl( "select_list")

0

アクセスしようとしているコントロールがクライアント側のコントロールです。サーバー側にアクセスする場合は、runat = "server"のようなタグを追加してみてください。何かのように

<select id="..." runat="server"> 
0

runat属性を "server"に設定し、ListViewのLayoutTemplateプロパティを使用して取得する必要があります。

<asp:ListView ID="lvList" runat="server"> 
    <LayoutTemplate> 
     <select id="select_list" runat="server"> 
     <option value="-1"> 
      select one 
     </option> 
     <asp:PlaceHolder ID="itemPlaceHolder" runat="server" /> 
     </select> 
    </LayoutTemplate> 
    <ItemTemplate> 
     <option value="<%# Eval("code") %>"> 
     <%# Eval("Name") %> 
     </option> 
    </ItemTemplate> 
    </asp:ListView> 
1

であなたのHTMLコントロールを実行するのですasp:DropDownList

<asp:DropDownList ID="select_list" runat="server" 
      AppendDataBoundItems="true" 
      DataTextField="Name" 
      DataValueField="code"> 
    <asp:ListItem Text="select one" Value="-1" /> 
</asp:DropDownList> 

を使用して、より少ないマークアップしたコードを書くことができ、あなたが埋めるためにListViewを使用している理由がありますDropDownListを使用するのではなく、HTML select

あなただけのDropDownListので、同じように全体ListViewを置き換えることができます。これは自動的になります

SampleDdl.DataSource = DataSet 
SampleDdl.DataValueField = "Code" 
SampleDdl.DataTextField = "Name" 
SampleDdl.DataBind() 

<asp:DropDownList ID="SampleDdl" runat="server" AppendDataBoundItems="true"> 
    <asp:ListItem Text="Select one" Value="-1" /> 
</asp:DropDownList> 

すると、背後にあるコードの中で、あなただけのDropDownListので、同じようにバインドすることができますDropDownListを入力してください。 DataValueFieldを指定すると、DropDownListのすべてのオプションでValueの属性が自動的に設定されます。同様に、DataTextFieldText属性を設定します。

上記のサンプルでAppendDataBoundItems="true"を追加したことに注意することも重要です。デフォルトのオプション "Select one"がコントロールにバインドされているデータに置き換えられないように追加する必要があります。既存のオプションの後にバインドされたデータが追加されます。

DropDownListを使用している場合は、SampleDdlを直接参照してコードビハインドのコントロールにアクセスできます。

関連する問題