-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

CommandArgumentこのように、aspxの ListViewプロパティとOnItemCommandコードビハインドのListViewを使用します

つまり、IDを取得して、OnItemCommand次のような別のページに移動できます。

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 に答える