girdview问题 我想在绑定的gridview里添加dropdownlist控件来对应绑定的每一行每一列要取的值!~求代码.....以及显示的结果。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 protected void gdvProInfo_RowDataBound(object sender, GridViewRowEventArgs e) { //在编辑状态绑定‘是’,‘否’到下拉列表 if (e.Row.RowState == (DataControlRowState.Alternate | DataControlRowState.Edit)) { DropDownList ddl = e.Row.FindControl("ddlIFFORBID") as DropDownList; HiddenField hdIfFor = e.Row.FindControl("hdIfFor") as HiddenField; ListItem li = ddl.Items.FindByText(hdIfFor.Value); if (li != null) { ddl.SelectedItem.Selected = false; li.Selected = true; } } if (e.Row.RowState == DataControlRowState.Edit) { DropDownList ddl = e.Row.FindControl("ddlIFFORBID") as DropDownList; HiddenField hdIfFor = e.Row.FindControl("hdIfFor") as HiddenField; ListItem li = ddl.Items.FindByText(hdIfFor.Value); if (li != null) { ddl.SelectedItem.Selected = false; li.Selected = true; } }} 加红的部分是关键代码,代码写在事件RowDataBound里。 我绑定数据后后台没有显示出gdvProInfo_RowDataBound 是什么原因... 嗯,应该在rowdatabound事件编dropdownlist的绑定代码 后台代码:using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Data.SqlClient;public partial class Default4 : System.Web.UI.Page{ SqlConnection sqlcon; string strCon = "Data Source=(local);Database=北风贸易;Uid=sa;Pwd=sa"; protected void Page_Load(object sender, EventArgs e) { DropDownList ddl; if (!IsPostBack) { string sqlstr = "select top 5 * from 飞狐工作室"; sqlcon = new SqlConnection(strCon); SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon); DataSet myds = new DataSet(); sqlcon.Open(); myda.Fill(myds, "飞狐工作室"); GridView1.DataSource = myds; GridView1.DataBind(); for (int i = 0; i <= GridView1.Rows.Count - 1; i++) { DataRowView mydrv = myds.Tables["飞狐工作室"].DefaultView[i]; if (Convert.ToString(mydrv["员工性别"]).Trim() == "True") { ddl = (DropDownList)GridView1.Rows[i].FindControl("DropDownList1"); ddl.SelectedIndex = 0; } if (Convert.ToString(mydrv["员工性别"]).Trim() == "False") { ddl = (DropDownList)GridView1.Rows[i].FindControl("DropDownList1"); ddl.SelectedIndex = 1; } } sqlcon.Close(); } } public SqlDataReader ddlbind() { string sqlstr = "select distinct 员工性别 from 飞狐工作室"; sqlcon = new SqlConnection(strCon); SqlCommand sqlcom = new SqlCommand(sqlstr, sqlcon); sqlcon.Open(); return sqlcom.ExecuteReader(); }前台主要代码:<asp:GridView ID="GridView1" runat="server" AllowSorting="True" AutoGenerateColumns="False" CellPadding="3" Font-Size="9pt" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px"> <FooterStyle BackColor="White" ForeColor="#000066" /> <Columns> <asp:BoundField DataField="身份证号码" HeaderText="用户ID" SortExpression="身份证号码" /> <asp:BoundField DataField="姓名" HeaderText="用户姓名" SortExpression="姓名"/> <asp:TemplateField HeaderText="员工性别"> <ItemTemplate> <asp:DropDownList ID="DropDownList1" runat="server" DataSource='<%# ddlbind()%>' DataValueField="员工性别" DataTextField="员工性别"> </asp:DropDownList> </ItemTemplate> </asp:TemplateField> <asp:BoundField DataField="家庭住址" HeaderText="家庭住址" SortExpression="家庭住址"/> </Columns> <RowStyle ForeColor="#000066" /> <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" /> <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" /> <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" /> </asp:GridView> 建一个数据源,然后绑定到下拉菜单上。如果页面用了数据源控件:DropDownList1.DataSourceID=***;如要绑定生成的DATASET或者DATATABLE:DropDownList1.DataSource=***;取值嘛:foreach (GridViewRow row in GridView1.Rows) { DropDownList DropDownList1 = row.FindControl("DropDownList1") as DropDownList; DropDownList1.SelectedValue;//取的值 } rowdatabound这个事件是不是要加什么头文件进去?主动加进去会报错... 不会加控件的事件吗? 最简便的方法,你打开vs 到页面设计模式窗口。然后单击你的GridView 在右边的属性框里,是不是有个“雷电”的符号,然后你点一下这个符号,里面就是当前GridView 的所有事件,找到rowdatabound 这行,然后双击,你会进入.cs页面,直接在这个事件里编写那段代码 protected void DDLAnnex_SelectedIndexChanged(object sender, EventArgs e) { DropDownList drp = sender as DropDownList; // 触发事件的 DropDownList GridViewRow row = drp.NamingContainer as GridViewRow; // GridView 当前行 row.Style.Add(HtmlTextWriterStyle.BackgroundColor, drp.SelectedValue); int CurRow = row.RowIndex; } 楼主没用过gdvProInfo_RowDataBound 事件? 请教个简单的类型转换问题 winform自定义用户控件嵌套在ASP.NET中使用权限限制,寻求解决....[在线等待回复] 验证码_页面机制 如何才能发布ASP.neT程序?我的是vb编写的!请大家帮忙!!!! 请问怎么根据浏览器的编码进入不同的页面呢?谢谢 怎么知道XML文件有多少行数据呢? 在线急等css中如何写入onmouseover和onmouseout事件???谢谢 DataSet 的外键约束的问题? 第 1 行: ',' 附近有语法错误。???? 部署aspx网站 config配置文件 怎么设置GridView的列数和行数。
{
//在编辑状态绑定‘是’,‘否’到下拉列表
if (e.Row.RowState == (DataControlRowState.Alternate | DataControlRowState.Edit)) {
DropDownList ddl = e.Row.FindControl("ddlIFFORBID") as DropDownList;
HiddenField hdIfFor = e.Row.FindControl("hdIfFor") as HiddenField;
ListItem li = ddl.Items.FindByText(hdIfFor.Value);
if (li != null)
{
ddl.SelectedItem.Selected = false;
li.Selected = true;
}
}
if (e.Row.RowState == DataControlRowState.Edit) {
DropDownList ddl = e.Row.FindControl("ddlIFFORBID") as DropDownList;
HiddenField hdIfFor = e.Row.FindControl("hdIfFor") as HiddenField;
ListItem li = ddl.Items.FindByText(hdIfFor.Value);
if (li != null)
{
ddl.SelectedItem.Selected = false;
li.Selected = true;
}
}
} 加红的部分是关键代码,代码写在事件RowDataBound里。
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class Default4 : System.Web.UI.Page
{
SqlConnection sqlcon;
string strCon = "Data Source=(local);Database=北风贸易;Uid=sa;Pwd=sa";
protected void Page_Load(object sender, EventArgs e)
{
DropDownList ddl;
if (!IsPostBack)
{
string sqlstr = "select top 5 * from 飞狐工作室";
sqlcon = new SqlConnection(strCon);
SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon);
DataSet myds = new DataSet();
sqlcon.Open();
myda.Fill(myds, "飞狐工作室");
GridView1.DataSource = myds;
GridView1.DataBind();
for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
{
DataRowView mydrv = myds.Tables["飞狐工作室"].DefaultView[i];
if (Convert.ToString(mydrv["员工性别"]).Trim() == "True")
{
ddl = (DropDownList)GridView1.Rows[i].FindControl("DropDownList1");
ddl.SelectedIndex = 0;
}
if (Convert.ToString(mydrv["员工性别"]).Trim() == "False")
{
ddl = (DropDownList)GridView1.Rows[i].FindControl("DropDownList1");
ddl.SelectedIndex = 1;
}
}
sqlcon.Close();
}
}
public SqlDataReader ddlbind()
{
string sqlstr = "select distinct 员工性别 from 飞狐工作室";
sqlcon = new SqlConnection(strCon);
SqlCommand sqlcom = new SqlCommand(sqlstr, sqlcon);
sqlcon.Open();
return sqlcom.ExecuteReader();
}
前台主要代码:
<asp:GridView ID="GridView1" runat="server" AllowSorting="True" AutoGenerateColumns="False"
CellPadding="3" Font-Size="9pt" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px">
<FooterStyle BackColor="White" ForeColor="#000066" />
<Columns>
<asp:BoundField DataField="身份证号码" HeaderText="用户ID" SortExpression="身份证号码" />
<asp:BoundField DataField="姓名" HeaderText="用户姓名" SortExpression="姓名"/>
<asp:TemplateField HeaderText="员工性别">
<ItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" DataSource='<%# ddlbind()%>' DataValueField="员工性别" DataTextField="员工性别">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="家庭住址" HeaderText="家庭住址" SortExpression="家庭住址"/>
</Columns>
<RowStyle ForeColor="#000066" />
<SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
<HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
</asp:GridView>
如果页面用了数据源控件:DropDownList1.DataSourceID=***;
如要绑定生成的DATASET或者DATATABLE:DropDownList1.DataSource=***;
取值嘛:
foreach (GridViewRow row in GridView1.Rows)
{
DropDownList DropDownList1 = row.FindControl("DropDownList1") as DropDownList;
DropDownList1.SelectedValue;//取的值
}
主动加进去会报错...
不会加控件的事件吗?
最简便的方法,你打开vs 到页面设计模式窗口。然后单击你的GridView 在右边的属性框里,是不是有个“雷电”的符号,然后你点一下这个符号,里面就是当前GridView 的所有事件,找到rowdatabound 这行,然后双击,你会进入.cs页面,直接在这个事件里编写那段代码
{
DropDownList drp = sender as DropDownList; // 触发事件的 DropDownList
GridViewRow row = drp.NamingContainer as GridViewRow; // GridView 当前行
row.Style.Add(HtmlTextWriterStyle.BackgroundColor, drp.SelectedValue);
int CurRow = row.RowIndex;
}