[英]How to add event for Checkbox click in Asp.net Gridview Column
我在asp中有一個gridview,我已將第一列添加為復選框列。現在我想選擇此列並獲取行的id值..但是我沒有得到如何做到這一點..
這是我的Aspx代碼..
<asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound"
AutoGenerateColumns="False" BackColor="LightGoldenrodYellow"
BorderColor="Tan" BorderWidth="1px" CellPadding="2" ForeColor="Black"
GridLines="None">
<AlternatingRowStyle BackColor="PaleGoldenrod" />
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<asp:CheckBox ID="chkhdr" runat="server" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chkChild" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Username">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("col0") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Role(Admin)">
<ItemTemplate>
<asp:CheckBox ID="chkAdmin" runat="server" Checked='<%# Eval("col1") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Role(User)">
<ItemTemplate>
<asp:CheckBox ID="chkUser" runat="server" Checked='<%# Eval("col2") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Role(GeneralUser)">
<ItemTemplate>
<asp:CheckBox ID="chkgen" runat="server" Checked='<%# Eval("col3") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
這是我的代碼背后文件...
protected void BindGridviewData()
{
var role = from MembershipUser u in Membership.GetAllUsers()
select new
{
User = u.UserName,
Role = string.Join(",", Roles.GetRolesForUser(u.UserName))
};
DataTable dTable = new DataTable();
dTable.Columns.Add("col0", typeof(string));
dTable.Columns.Add("col1", typeof(bool));
dTable.Columns.Add("col2", typeof(bool));
dTable.Columns.Add("col3", typeof(bool));
foreach (MembershipUser u in Membership.GetAllUsers())
{
DataRow dRow = dTable.NewRow();
dRow[0] = u.UserName;
string[] roles = Roles.GetRolesForUser(u.UserName);
dRow[1] = roles.Contains("Admin") ? true : false;
dRow[2] = roles.Contains("DPAO User") ? true : false;
dRow[3] = roles.Contains("GeneralUser") ? true : false;
dTable.Rows.Add(dRow);
}
GridView1.DataSource = dTable;
GridView1.DataBind();
}
請大家幫助我,因為我不知道如何完成這個...提前謝謝......
試試這個,
<asp:TemplateField HeaderText="View">
<ItemTemplate>
<asp:CheckBox ID="chkview" runat="server" AutoPostBack="true" OnCheckedChanged="chkview_CheckedChanged" />
</ItemTemplate>
</asp:TemplateField>
在aspx.cs頁面中添加復選框更改事件
protected void chkview_CheckedChanged(object sender, EventArgs e)
{
GridViewRow row = ((GridViewRow)((CheckBox)sender).NamingContainer);
int index = row.RowIndex;
CheckBox cb1 = (CheckBox)Gridview.Rows[index].FindControl("chkview");
string yourvalue = cb1.Text;
//here you can find your control and get value(Id).
}
如果你想通過按鈕 刪除記錄試試這個:
在gridview之外添加一個Button來刪除:
<asp:Button ID="cmdDelete" runat="server" onclick="cmdDelete_Click" Text="Delete" />
代碼背后:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindGridviewData();
}
}
protected void BindGridviewData()
{
DataTable dTable = new DataTable();
dTable.Columns.Add("col0", typeof(string));
dTable.Columns.Add("col1", typeof(bool));
dTable.Columns.Add("col2", typeof(bool));
dTable.Columns.Add("col3", typeof(bool));
foreach (MembershipUser u in Membership.GetAllUsers())
{
DataRow dRow = dTable.NewRow();
dRow[0] = u.UserName;
string[] roles = Roles.GetRolesForUser(u.UserName);
dRow[1] = roles.Contains("Admin") ? true : false;
dRow[2] = roles.Contains("DPAO User") ? true : false;
dRow[3] = roles.Contains("GeneralUser") ? true : false;
dTable.Rows.Add(dRow);
}
GridView1.DataSource = dTable;
GridView1.DataBind();
}
protected void cmdDelete_Click(object sender, EventArgs e)
{
foreach (GridViewRow row in GridView1.Rows)
{
CheckBox chk = (CheckBox)row.FindControl("chkChild");
if (chk.Checked)
{
Label username = (Label)row.FindControl("Label1");
Membership.DeleteUser(username.Text);
BindGridviewData();
}
}
}
您可以遍歷gridivew行集合並檢查它是否已被選中。
添加選定的行(或在您的情況下獲取ID)並進行進一步處理。
以下網址可以幫助您入門:
http://www.aspsnippets.com/Articles/GridView-with-CheckBox-Get-Selected-Rows-in-ASPNet.aspx
使用OnCheckedChanged
事件
<ItemTemplate>
<asp:CheckBox ID="chkgen" runat="server" Checked='<%# Eval("col3") %>'
OnCheckedChanged="chkgen_OnCheckedChanged"/>
</ItemTemplate>
CS:
protected void chkgen_OnCheckedChanged(object sender, EventArgs e)
{
int selRowIndex = ((GridViewRow)(((CheckBox)sender).Parent.Parent)).RowIndex;
CheckBox cb = (CheckBox)gridView.Rows[selRowIndex].FindControl("chkgen");
if (cb.Checked)
{
//Perform your logic
}
}
protected void GetFillDropdown()
{
string consString = ConfigurationManager.ConnectionStrings["SheetalAcademy"].ConnectionString;
SqlConnection conn = new SqlConnection(consString);
int EID = Convert.ToInt32(Session["EmailID"].ToString());
SqlCommand cmd = new SqlCommand("Select id,Course_Name from tbl_Courses where EID='" + EID + "' and Active='True'", conn);
conn.Open();
ddCourseType.Items.Clear();
ddCourseType.Items.Add("All");
ddCourseType.AppendDataBoundItems = true;
ddCourseType.DataSource = cmd.ExecuteReader();
ddCourseType.DataTextField = "Course_Name";
ddCourseType.DataValueField = "id";
ddCourseType.DataBind();
conn.Close();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.