asp gridview with checkbox并选择

时间:2015-04-08 18:43:39

标签: c# asp.net

我正在尝试开发一个选择的asp c#gridview,以便我可以显示记录的其他详细信息。我还需要一个复选框,允许用户检查行以进行进一步处理。我可以单独完成每个但不能一起实现。它甚至可能吗?

3 个答案:

答案 0 :(得分:2)

当然有可能。 对于复选框列,请使用TemplateFieldhttps://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.templatefield%28v=vs.110%29.aspx

在数据网格中,aspx:

<asp:TemplateField>
    <ItemTemplate>
        <asp:CheckBox ID="CheckBoxProcess" runat="server" />
    </ItemTemplate>
</asp:TemplateField>

在代码背后:

protected void ButtonProcess_Click(object sender, EventArgs e)
{
    foreach (GridViewRow item in GridView1.Rows)
    {
        CheckBox chk = (CheckBox)item.FindControl("CheckBoxProcess");
        if (chk != null)
        {
            if (chk.Checked)
            {
                // This record should be processed
            }
        }
    }
}

GridView具有内置行选择功能,您可以通过将AutoGenerateSelectButton属性设置为true来启用它:

<asp:GridView ... AutoGenerateSelectButton="true" />

但是,当用户点击该行时(而不是单击该链接),选择该行更加用户友好。 为此,您需要在行中附加一些java脚本:

void GridView1_RowCreated(Object sender, GridViewRowEventArgs e)
{
    if(e.Row.RowType == DataControlRowType.DataRow)
        e.Row.Attributes.Add("onclick", Page.ClientScript.GetPostBackEventReference(sender, "Select$" + e.Row.RowIndex.ToString())
}

对于行单击选择,还有更好的解释解决方案:

https://stackoverflow.com/a/6250846/461810

答案 1 :(得分:0)

您可以使用模板字段,只需将控件添加到其中。

<Columns>                             
    <asp:TemplateField>
        <ItemTemplate> 
            <select />
        </ItemTemplate>
    </asp:TemplateField>             
    <asp:TemplateField>
        <ItemTemplate> 
            <checkbox />
        </ItemTemplate>
    </asp:TemplateField>                  
</Columns> 

答案 2 :(得分:0)

<asp:TemplateField>
    <ItemTemplate>
        <asp:CheckBox ID="SelectChk" OnCheckedChanged="chk_Click1" runat="server" AutoPostBack="true" />
    </ItemTemplate>
</asp:TemplateField>

在CS代码中:

protected void chk_Click1(object sender, EventArgs e)
{
    CheckBox MChk = sender as CheckBox;
    GridViewRow MyGridR = MChk.NamingContainer as GridViewRow;
    GridView1.SelectRow(MyGridR.RowIndex);
}