我想在绑定的gridview里添加dropdownlist控件来对应绑定的每一行每一列要取的值!~求代码.....以及显示的结果。

解决方案 »

  1.   

      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里。
      

  2.   

    我绑定数据后后台没有显示出gdvProInfo_RowDataBound  是什么原因...
      

  3.   

    嗯,应该在rowdatabound事件编dropdownlist的绑定代码
      

  4.   

    后台代码:
    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>
      

  5.   

    建一个数据源,然后绑定到下拉菜单上。
    如果页面用了数据源控件:DropDownList1.DataSourceID=***;
    如要绑定生成的DATASET或者DATATABLE:DropDownList1.DataSource=***;
    取值嘛:
    foreach (GridViewRow row in GridView1.Rows)  
      {
      DropDownList DropDownList1 = row.FindControl("DropDownList1") as DropDownList;
      DropDownList1.SelectedValue;//取的值
      }
      

  6.   

    rowdatabound这个事件是不是要加什么头文件进去?
    主动加进去会报错...
      

  7.   


      不会加控件的事件吗?
       最简便的方法,你打开vs 到页面设计模式窗口。然后单击你的GridView 在右边的属性框里,是不是有个“雷电”的符号,然后你点一下这个符号,里面就是当前GridView 的所有事件,找到rowdatabound 这行,然后双击,你会进入.cs页面,直接在这个事件里编写那段代码
      

  8.   

     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;
        }
      

  9.   

    楼主没用过gdvProInfo_RowDataBound 事件?