我正在尝试开发一个选择的asp c#gridview,以便我可以显示记录的其他详细信息。我还需要一个复选框,允许用户检查行以进行进一步处理。我可以单独完成每个但不能一起实现。它甚至可能吗?
答案 0 :(得分:2)
当然有可能。
对于复选框列,请使用TemplateField
列https://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())
}
对于行单击选择,还有更好的解释解决方案:
答案 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);
}