2017-06-14 64 views
0

我正在創建一個listview並綁定數據庫中的數據。訪問listview的代碼後面的代碼

<asp:ListView runat="server" ID="lstService" DataTextField="Name" 
    DataValueField="Id" AutoPostBack="True"> 
    <LayoutTemplate> 
     <table runat="server" id="table1"> 
      <tr runat="server" id="itemPlaceholder"></tr> 
     </table> 
    </LayoutTemplate> 
    <ItemTemplate> 
     <tr runat="server"> 
      <td runat="server"> 

       <asp:Label ID="NameLabel" runat="server" 
        Text='<%#Eval("Name") %>' Width="500px" Height="30px" /> 

       <asp:Button CssClass="btn btn-default" ID="srvButton" runat="server" 
        Text="Add" OnClick="srvButton_Click" /> 
       <div class="voffset3"></div> 

      </td> 
     </tr> 
    </ItemTemplate> 
</asp:ListView> 

在後面的代碼我綁定這個領域的數據。我正在提取ID,名稱列。

現在它顯示標籤和按鈕上的文本「添加」按鈕。但是當我點擊添加時,我想傳遞與該列表視圖項關聯的「Id」的值,我該怎麼做?

protected void srvButton_Click(object sender, EventArgs e) 
{ 

} 

回答

0

首先CommandArgument添加到您的按鈕與該項目id的值:

<asp:Button CssClass="btn btn-default" ID="srvButton" runat="server" Text="Add" OnClick="srvButton_Click" CommandArgument='<%#Eval("Id")' /> 

現在,您可以訪問它在srvButton_Click處理:

protected void srvButton_Click(object sender, EventArgs e) 
{ 
    Button myButton = (Button)sender; 
    int i = Convert.ToInt32(myButton.CommandArgument.ToString()); 
    //---- 
} 
+0

謝謝,有沒有我可以在後端綁定文本=「添加」或「刪除」,我不想在默認情況下將文本添加爲​​文本。 –

+0

當然。您將需要添加一個ItemDataBound處理程序到您的ListView和處理程序中,您可以根據您的要求將Text屬性分配給Items。看到這裏:https://stackoverflow.com/questions/1588500/get-data-value-from-listview-itemdatabound – mjw

0

您可以更改OnClickOnCommand,並與它一起發送CommandArgument

<asp:Button CssClass="btn btn-default" ID="srvButton" runat="server" 
    Text="Add" OnCommand="srvButton_Command" CommandArgument=<%# Eval("ID") %> /> 

然後在後面的代碼

protected void srvButton_Command(object sender, CommandEventArgs e) 
{ 
    int id = Convert.ToInt32(e.CommandArgument); 
} 

或者你可以使用OnItemCommand事件ListView控件與DataKeyNames財產在一起,並用一個按鈕沒有綁定到它的事件。

<asp:ListView runat="server" ID="lstService" DataKeyNames="id" 
    OnItemCommand="lstService_ItemCommand"> 

    <asp:Button CssClass="btn btn-default" ID="srvButton" runat="server" Text="Add" /> 

然後在代碼後面從ListView中獲取datakey。

protected void lstService_ItemCommand(object sender, ListViewCommandEventArgs e) 
{ 
    int id = Convert.ToInt32(lstService.DataKeys[e.Item.DataItemIndex].Values[0]); 
}