如何在行中检查listview的datakeyvalue

时间:2017-06-01 03:39:20

标签: c# asp.net listview

我希望当我点击按钮复选框时,我会获得行中的数据键值复选框。任何人都有想法

<asp:ListView ID="rlv_CouponCode" runat="server" DataKeyNames="ID" DataSourceID="sds_CouponCode" ItemPlaceholderID="itemPlace">
<ItemTemplate>
    <tr>
        <td>
            <asp:CheckBox ID="Checkbox1" runat="server" />
        </td>
        <td>
            <asp:TextBox Enabled="false" ID="Checkbox" runat="server"
                Text='<%#Eval("Code") %>' />
        </td>
        <td>
            <asp:TextBox Enabled="false" ID="NameLabel" runat="server"
                Text='<%#Eval("Discount") %>' />
        </td>
    </tr>
</ItemTemplate>

这里我的代码背后是Button1:

protected void Button1_Click(object sender, EventArgs e)
{
    foreach (ListViewItem item in rlv_CouponCode.Items)
    {
        CheckBox cb = (CheckBox)item.FindControl("Checkbox1");
        if (cb.Checked)
        {
           //
        }
    }
}

2 个答案:

答案 0 :(得分:0)

为您的复选框提供一个ID,该ID是其显示的记录的ID。这样,每个复选框都有一个唯一的ID,您可以使用它来处理数据。例如,如果您的数据有CouponID,那么:

<asp:CheckBox ID='<%#Eval("CouponID") %>' runat="server" />

在服务器端,使用该ID获取它,看看是否已经检查过。

答案 1 :(得分:0)

您已设置DataKeyNames,因此您可以访问这些内容。

for (int i = 0; i < rlv_CouponCode.Items.Count; i++)
{
    CheckBox cb = (CheckBox)rlv_CouponCode.Items[i].FindControl("Checkbox1");

    if (cb.Checked)
    {
        int id = Convert.ToInt32(rlv_CouponCode.DataKeys[i].Values[0]);    
    }
}