2017-06-14 27 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]); 
}