gridview 动态绑定控件

想在gridview的第一行绑定checkbox控件,第2行绑定dropdownlist控件,而且列可以动态添加。请问asp.netc#怎么实现。在线等,解决后加100分... 想在gridview的第一行绑定checkbox控件,第2行绑定dropdownlist控件,而且列可以动态添加。请问asp .net c# 怎么实现。在线等,解决后加100分。
谢谢你的回答,不过我需要的是动态增加列,而且每列里面既有checkbox,dropdownlist,
展开
 我来答
mnbvc94449
2009-02-26 · TA获得超过1084个赞
知道小有建树答主
回答量:580
采纳率:100%
帮助的人:587万
展开全部
第一步:生成一个和gridview相同列的datatable(暂且叫tableA),用于绑定gridview。
第二步:把gridview的数据从数据库中取出,放入datatable,注意,这是另外一个datatable(暂且叫tableB),gridview的数据都从这里取。不过datatable的行是gridview的列。第一步的那个datatable仅仅用于gridview绑定用,没有任何其他用途。
第三步:根据第二步的tableB的数据行,动态生成gridview的列。同时add控件。
第四步:给gridview生成的动态控件绑定自己的事件。
第五步:给事件添加更改tableB的代码。
第六步:把tableB放进session.
完毕。
Storm代理
2023-07-25 广告
StormProxies是一家可靠的代理服务提供商,提供原生IP(住宅原生IP)和高匿名代理服务。以下是关于StormProxies的原生IP服务的一些信息:1. 住宅原生IP:StormProxies提供的住宅原生IP是指从真实的家庭或企... 点击进入详情页
本回答由Storm代理提供
3200230
2009-02-21 · TA获得超过365个赞
知道答主
回答量:301
采纳率:0%
帮助的人:0
展开全部
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" AutoGenerateColumns="false" runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Panel ID="Panel1" DefaultButton="Button1" runat="server">
<asp:TextBox ID="TextBox1" Text='<%#Eval("StrValue")%>' runat="server" />
<asp:Button ID="Button1" UseSubmitBehavior="false" runat="server" Text="Button" OnClick="Button1_Click" />
</asp:Panel>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<br />
<br />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>
</form>

我为了使我的GridView有数据测试,所以新增了test类,楼主完全用数据库来提供数据。
public class test
{
private string strValue;

public string StrValue
{
get
{
return strValue;
}
set
{
if (strValue == value)
return;
strValue = value;
}
}
}

接着是页面code部分了

protected void Page_Load(object sender, EventArgs e)
{

List<test> a = new List<test>();

for (int i = 0; i < 10; i++)
{
test t = new test();
t.StrValue = i.ToString();
a.Add(t);
}

GridView1.DataSource = a;
GridView1.DataBind();

}

protected void Button1_Click(object sender, EventArgs e)
{

Button btn = (Button)sender;
Panel pan = (Panel)btn.Parent;
TextBox tb = (TextBox)pan.FindControl("TextBox1");
Label1.Text = tb.Text;
}

赶快运行下吧,把鼠标点进第一行的文本框,不要犹豫,按回车八,按好了么,快看看下边的Label显示什么吧,没错吧,而且每行都有这样的效果噢!!

好了我总结一下技术要点吧:

1.在Template列中用Panel把TextBox和Button包裹进去,然后在Panel上设置DefaultButton的属性指向Button,这个是关键。
2.后台Button_Click事件的sender参数可以帮助你获取你想要的控件或资料。

thats all
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liunight111
2009-02-26 · TA获得超过168个赞
知道小有建树答主
回答量:135
采纳率:0%
帮助的人:0
展开全部
你好:

你的要求比较特殊,用GridView也可以实现但是代码量比用表格多太多了,不如直接用表格。直接把两个数组填好了,列就自己添加了。
ccc是checkbox的一维数组
ddd是dropdownlist的二维数组,里面每个数组都是对应的dropdownlist的选项

protected void Page_Load(object sender, EventArgs e)
{
string[] ccc = { "checked", "checked", "checked", "checked", "",""};
string[,] ddd = new string[6, 3] { { "a", "a", "a" }, { "b", "b", "b" }, { "a", "a", "a" }, { "a", "a", "a" }, { "a", "a", "a" }, { "a", "a", "a" } };
mybind(ccc, ddd);
}

private void mybind(string[] checkvalue,string[,] ddlvalue)
{
string html = "<table border='1px' cellspacing='0' cellpadding='0' style='border-collapse:collapse;' bordercolor='Background' bgcolor='InactiveBorder'>";
html += "<tr>";
for (int i = 0; i < checkvalue.Length; i++)
{
html += "<td style='width: 40px ;'>";
html += "<input id='Checkbox" + i.ToString() + "' " + checkvalue[i] + " type='checkbox' />";
html += "</td>";
}
html += "</tr>";

html += "<tr>";
for (int i = 0; i <= ddlvalue.GetUpperBound(0); i++)
{
html += "<td>";
html += "<select style='width: 107px'>";
for (int j = 0; j <= ddlvalue.GetUpperBound(1); j++)
{
html += "<option >" + ddlvalue[i, j] + "</option>";
}
html += "</select>";
html += "</td>";
}
html += "</tr>";

html += "</table>";
Response.Write(html);

}

GOOD LUCK!!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式