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"]他们都没有给我控制权..

有没有办法通过它的 id 来获得控制权,就像 JS 一样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

您是否有理由使用 aListView来填充 HTMLselect而不仅仅是使用 a DropDownList

你可以像这样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将自动填充 的Value所有选项中的属性DropDownList。同样,DataTextField将填充Text属性。

同样重要的是要注意我AppendDataBoundItems="true"在上面的示例中添加了 - 您需要添加它,以便“选择一个”的默认选项不会被绑定到控件的数据替换 - 而绑定的数据是附加在现有选项之后。

如果您使用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 回答