我需要在GridView中使用Checkboxlist来绑定来自其他表的数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我需要在GridView中使用Checkboxlist来绑定来自其他表的数据相关的知识,希望对你有一定的参考价值。
我必须填写gridview控件中的checkboxlist。
<asp:GridView ID="gvProject" CssClass="Gridview viewproject-th-col-remov" runat="server" AutoGenerateColumns="false" OnRowDataBound="gvProject_RowDataBound" DataKeyNames="ProjectID" AllowPaging="True">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="lnkContract" runat="server" Text="Contract" ControlStyle-CssClass="pdf-download-link"OnClick="DownloadFile" CommandArgument='<%# Eval("ProjectId") %>'></asp:LinkButton>
<asp:CheckBoxList ID="chkAdSpace" runat="server"></asp:CheckBoxList>
</ItemTemplate>
</asp:TemplateField>
</Columns> </asp:GridView>
然后我像这样绑定了checkboxlist中的数据。
private void BindList(Int32 _id)
{
DataTable dtAdSpace = new DataTable();
dtAdSpace = CommonDataViews.GetAdSpaceSearch(_id);
if (dtAdSpace.Rows.Count > 0)
{
chkAdSpace.DataSource = dtAdSpace;
chkAdSpace.DataTextField = "adspace";
chkAdSpace.DataValueField = "adspace";
chkAdSpace.DataBind();
}
}
但是,问题是chkASpace无法访问int BindList(Int32 _id)或通过表单。请帮助我为什么这不能像我使用的LinkButton那样访问。
提前致谢。
王
要检查列表中的所有复选框只是遍历每个复选框以检查它们。在Databind之后。
foreach (ListItem listItem in chkAdSpace.Items)
{
listItem.Selected = true;
}
检索要绑定在DataTable中的数据。在GridView_RowDataBound事件中,使用DataTable绑定Checkboxlist。使用FindControl获取Checkboxlist。如下所示:
protected void gvProject_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
CheckBoxList cblProject = (CheckBoxList)e.Row.FindControl("chkAdSpace");
cblProject.DataSource = dtAdSpace;
cblProject.DataTextField = "adspace";
cblProject.DataValueField = "adspace";
cblProject.DataBind();
}
}
我认为问题是如何在ASP.net中完成,而不是从代码背后。
即:Gridview
与datasource,
绑定,但在gridview
内有一个列有checkboxlist
和自己的数据源。使用Eval("yourcolumn")
尝试绑定到GridView的主数据源而不是checkboxlist
。
对不起,我没有答案,因为我也想确定一下。
这是我的答案:
GridView代码是:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="id" DataSourceID="SqlDataSource1"
OnRowDataBound="GridView1_RowDataBound">
<Columns>
<asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" ReadOnly="True" SortExpression="id" />
<asp:BoundField DataField="name" HeaderText="name" SortExpression="name" />
<asp:TemplateField HeaderText="Subjects">
<ItemTemplate>
<asp:CheckBoxList ID="CheckBoxList1" runat="server" DataTextField="fprefid" DataValueField="fprefid">
</asp:CheckBoxList>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
这是C#代码:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { CheckBoxList cbl = (CheckBoxList)e.Row.FindControl("CheckBoxList1"); object objTemp = GridView1.DataKeys[e.Row.RowIndex].Value as object; string id = objTemp.ToString(); SqlConnection con1 = new SqlConnection(constr); SqlConnection con2 = new SqlConnection(constr); SqlCommand com1 = new SqlCommand("select prefid from preferences",con1); if (con1.State == ConnectionState.Closed) con1.Open(); if (con2.State == ConnectionState.Closed) con2.Open(); SqlDataReader dreader1 = com1.ExecuteReader(); if(dreader1.HasRows) { while(dreader1.Read()) { SqlCommand com2 = new SqlCommand("select fprefid from person_pref where fpersonid='" + id + "' and fprefid = '" + dreader1["prefid"] + "'", con2); SqlDataReader dreader2 = com2.ExecuteReader(); ListItem li = new ListItem(); if (dreader2.HasRows) { li.Text = dreader1["prefid"].ToString(); li.Selected = true; } else { li.Text = dreader1["prefid"].ToString(); li.Selected = false; } cbl.Items.Add(li); dreader2.Close(); } } } }
以上是关于我需要在GridView中使用Checkboxlist来绑定来自其他表的数据的主要内容,如果未能解决你的问题,请参考以下文章
在 Web 应用程序中使用 C# 在 asp:GridView 中复制粘贴一行
需要 Id 才能在 gridview 中上传 excel 工作表
用于获取重复记录并在 Gridview 中显示为一行的 SQL 查询
DevExpress 中gridview怎么才能新建一行?其中的gridview1.AddNewRecord()方法没用