-1

我正在尝试使用列表视图来动态显示数据库中的数据。我希望在单击该数据时,应该通过获取所选数据的 ID 来运行背景编码,然后它应该导航到另一个页面。

4

2 回答 2

1

对我有用的答案

<asp:ListView ID="ListView1" runat="server" DataKeyNames="ID" 
        onselectedindexchanging="ListView1_SelectedIndexChanging">
<LayoutTemplate>
    <ul>
        <asp:PlaceHolder ID="itemPlaceholder" runat="server" />    
    </ul>                
</LayoutTemplate>
<ItemTemplate>
    <li>
        <%#Eval("Subject") %>
         <asp:LinkButton ID="lnkSelect" Text="Read More" CommandName="Select"     runat="server" />
    </li>
</ItemTemplate>
<SelectedItemTemplate>
       <asp:LinkButton ID="lnkSelect" Text="Read More" CommandName="Select" runat="server"
           ForeColor="White" />
           <%#Eval("Subject") %>
           </SelectedItemTemplate>
    </asp:ListView>

.CS 文件

protected void ListView1_SelectedIndexChanging(object sender, ListViewSelectEventArgs e)
    {
        ListView1.SelectedIndex = e.NewSelectedIndex;
        string pid = ListView1.SelectedDataKey.Value.ToString();
        Session["id"] = pid;
        Response.Redirect("About.aspx");
    }
于 2013-01-12T06:44:53.320 回答
0

在 aspx 中使用 ListViewCommandArgument属性, OnItemCommand在后面的代码中使用 ListView 像这样

OnItemCommand简而言之,您可以像这样获得 ID并导航到另一个页面:

string employeeID = EmployeesListView.DataKeys[dataItem.DisplayIndex].Value.ToString();
Response.redirect("~/index.aspx?employeeID="+employeeID);

页面源 (aspx)

  <asp:ListView runat="server" 
    ID="EmployeesListView"
    OnItemCommand="EmployeesListView_OnItemCommand"
    DataSourceID="EmployeesDataSource" 
    DataKeyNames="EmployeeID">
    <LayoutTemplate>
      <table runat="server" id="tblEmployees" 
             cellspacing="0" cellpadding="1" width="440px" border="1">
        <tr id="itemPlaceholder" runat="server"></tr>
      </table>
      <asp:DataPager ID="EmployeesDataPager" runat="server" PageSize="10">
        <Fields>
          <asp:NumericPagerField />
        </Fields>
      </asp:DataPager>
    </LayoutTemplate>
    <ItemTemplate>
      <tr runat="server">
        <td>
          <asp:Label runat="server" ID="NameLabel" 
            Text='<%#Eval("LastName") + ", " + Eval("FirstName") %>' />
        </td>
        <td style="width:80px">
          <asp:LinkButton runat="server" 
            ID="SelectEmployeeButton" 
            Text="Add To List" 
            CommandName="AddToList" 
            CommandArgument='<%#Eval("LastName") + ", " + Eval("FirstName") %>' />
        </td>
      </tr>
    </ItemTemplate>
  </asp:ListView>

隐藏代码 (.cs)

  protected void EmployeesListView_OnItemCommand(object sender, ListViewCommandEventArgs e)
  {
    if (String.Equals(e.CommandName, "AddToList"))
    {
      // Verify that the employee ID is not already in the list. If not, add the
      // employee to the list.
      ListViewDataItem dataItem = (ListViewDataItem)e.Item;
      string employeeID = 
        EmployeesListView.DataKeys[dataItem.DisplayIndex].Value.ToString();

      if (SelectedEmployeesListBox.Items.FindByValue(employeeID) == null)
      {
        ListItem item = new ListItem(e.CommandArgument.ToString(), employeeID);
        SelectedEmployeesListBox.Items.Add(item);
      }
    }
  }

这是参考站点

于 2013-01-12T06:05:50.667 回答