1

私はそのようなものを持っています:

  <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そして、ボタンが送信された後、サーバー側でアクセスしたい..試してみましたがFindControl("select_list")、どれもコントロールを返してくれませんでした..lvList.FindControl("select_list")Request.Form["select_list"]

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

ありがとう。

4

5 に答える 5

2

これは学術目的ですか?を使用して、より少ないマークアップで同じコードを書くことができます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 の使用にこだわる場合は、サーバーで HTML コントロールを実行してください。runat="server"

于 2011-07-08T14:54:23.607 に答える
1

単に?を使用するのではなくListView、HTMLを入力するためにを使用している理由はありますか?selectDropDownList

全体ListViewを次のDropDownListように置き換えることができます。

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

DropDownList次に、コードビハインドで、次のようにバインドできます。

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

これにより、が自動的に入力DropDownListされます。を指定すると、のすべてのオプションに属性DataValueFieldが自動的に入力されます。同様に、は属性を設定します。ValueDropDownListDataTextFieldText

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

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

于 2011-07-08T15:15:47.263 に答える
0

コントロールがそれ自体のサーバー表現を持つようにするには、属性 runat="server" で宣言する必要があります

試す

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

FindControl("select_list") を使用してアクセスしてみてください

于 2011-07-08T14:45:24.643 に答える
0

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

<select id="..." runat="server">
于 2011-07-08T14:45:34.537 に答える
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>
于 2011-07-08T14:46:53.940 に答える