我在GridView1中有TextBox也有DropDownList,TextBox赋值没有问题,但是DropDownList赋值却出现问题?是我的写法错了吗?<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CssClass="GVTab"
            onrowdatabound="GridView1_RowDataBound" onrowdeleting="GridView1_RowDeleting" DataKeyNames="id" >
            <Columns>
                <asp:BoundField DataField="id" HeaderText="ID" Visible="false" />
                <asp:CommandField ShowDeleteButton="True" />
                <asp:TemplateField HeaderText="物料编号">
                    <ItemTemplate>
                        <asp:TextBox ID="pno" runat="server" Enabled="false" 
                            Text='<%# Eval("pno") %>' Width="100px" />
                        </asp:textbox>
                    </ItemTemplate>
                </asp:TemplateField>
<asp:TemplateField HeaderText="仓位">
                    <ItemTemplate>
                        <asp:DropDownList ID="loc" runat="server" Enabled="true" 
                            SelectValue='<%# Eval("loc") %>' Width="80px" />     //<-----请问这个地方如何写
                        </asp:dropdownList>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="备注">
                    <ItemTemplate>
                        <asp:TextBox ID="re" runat="server" Enabled="true" 
                            Text='<%# Eval("re") %>' Width="180px" />
                        </asp:textbox>
                    </ItemTemplate>
                </asp:TemplateField>
           </Columns>
        </asp:GridView>

解决方案 »

  1.   

    SelectedValue='<%# Eval("loc") %>' Width="80px" /> //<-----请问这个地方如何写
      
      

  2.   

    另外,在定义DropdownList的时候可以定义数据源,例如(仅仅是举例)<asp:DropDownList ID="loc" runat="server" DataSource='<%# Get仓位集合((string)Eval("pno")) %>' ......protected List<string> Get仓位集合(string 物料)
    {
        return 查询数据库返回能够保存某个或者某种物料的所有仓位(物料);
    }当然,如果仓位集合是多个属性的,例如返回的是"List<仓位>"类型或者DataTable类型的,你还可以在声明中指出显示所用的属性名、值所用的属性名。当实际使用时,其实应该在“查询数据库返回......”之前增加一句,先从数据缓存里取数据。当然也可以仅仅缓存在本页对象的private变量里(要根据所使用的查询条件——仓位——而分开保存),这样本页上这个GridView种不同行的DropdownList的数据绑定就不一定需要重复去读取数据库了。最后,这个方法其实就是BLL方法。这里演示的是用很干净的方法将界面声明和BLL方法分开,代码维护起来肯定比那种跑到什么GridView的DataBound事件处理方法中又访问BLL有查找和设置控件要清晰方便了。
      

  3.   

    查找控件foreach(GridViewRow row in GridView1.Rows){
    dropdown drop=row.findControl("") as DropDownlist;
    drop.datasource="";
    drop.dadtabind();
    }
      

  4.   

    <ItemTemplate>
    <asp:DropDownList ID="ddlSort" runat="server" Width="98%">
        </asp:DropDownList>
    <asp:HiddenField ID="Hd_Sort" runat="server" Value=' <%# Eval("BalSort")%>' />
    </ItemTemplate>
    protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
            {
                if (e.Row.RowIndex != -1)
                {  if (e.Row.RowState == DataControlRowState.Edit || e.Row.RowState == (DataControlRowState.Alternate | DataControlRowState.Edit))
                {
                    ((DropDownList)e.Row.FindControl("ddlSort")).SelectedValue = ((HiddenField)e.Row.FindControl("Hd_Sort")).Value;
                }
                }
            }protected void gv_RowEditing(object sender, GridViewEditEventArgs e)
            {
                gv.EditIndex = e.NewEditIndex;
                string strSort = ((DropDownList)gv.Rows[e.NewEditIndex].FindControl("ddlSort")).SelectedValue.Trim();
                gv.EditIndex = -1;
                BindData();
            }
      

  5.   

    SelectValue='<%# Eval("loc") %>' Width="80px" /> 
    我不太推荐赋值,说不上为什么,
    建议给selectIndex赋值
    我一般都这样用
     void dllBind()
        {
            string sSql;
            sqlcon = new SqlConnection(sConnStr);
            sqlcon.Open();
            SqlDataReader dr;
            SqlCommand sc;
            // 学生类别
            sSql = "SELECT [XSLB_DM], [XSLB_MC] FROM [XSLB]";
            sc= new SqlCommand(sSql, sqlcon);
            dr = sc.ExecuteReader();
            if (dr != null)
            {
                while (dr.Read())
                {
                    string txt = dr["XSLB_MC"].ToString().Trim();
                    string val = dr["XSLB_DM"].ToString().Trim();
                    ddlXSLB.Items.Add(new ListItem(txt, val));
                }
            }
            sqlcon.Close();
            //政治面貌
            sSql = "SELECT [ZZMM_DM], [ZZMM_MC] FROM [ZZMM]";
            sqlcon.Open();
            sc = new SqlCommand(sSql, sqlcon);
            dr = sc.ExecuteReader();
            if (dr != null)
            {
                while (dr.Read())
                {
                    string txt = dr["ZZMM_MC"].ToString().Trim();
                    string val = dr["ZZMM_DM"].ToString().Trim();
                    ddlZZMM.Items.Add(new ListItem(txt, val));
                }
            }
            sqlcon.Close();
            //学生系所
            sSql = "SELECT [XSXS_DM], [XSXS_MC] FROM [XSXS]";
            sqlcon.Open();
            sc = new SqlCommand(sSql, sqlcon);
            dr = sc.ExecuteReader();
            if (dr != null)
            {
                while (dr.Read())
                {
                    string txt = dr["XSXS_MC"].ToString().Trim();
                    string val = dr["XSXS_DM"].ToString().Trim();
                    ddlXSXS.Items.Add(new ListItem(txt, val));
                }
            }
            sqlcon.Close();
            //专业
            sSql = "SELECT [XSZY_DM], [XSZY_MC] FROM [XSZY]";
            sqlcon.Open();
            sc = new SqlCommand(sSql, sqlcon);
            dr = sc.ExecuteReader();
            if (dr != null)
            {
                while (dr.Read())
                {
                    string txt = dr["XSZY_MC"].ToString().Trim();
                    string val = dr["XSZY_DM"].ToString().Trim();
                    ddlXSZY.Items.Add(new ListItem(txt, val));
                }
            }
            sqlcon.Close();
            //年级
            sSql = "SELECT [XSJB_DM], [XSJB_MC] FROM [XSJB]";
            sqlcon.Open();
            sc = new SqlCommand(sSql, sqlcon);
            dr = sc.ExecuteReader();
            if (dr != null)
            {
                while (dr.Read())
                {
                    string txt = dr["XSJB_MC"].ToString().Trim();
                    string val = dr["XSJB_DM"].ToString().Trim();
                    ddlXSNJ.Items.Add(new ListItem(txt, val));
                }
            }
            sqlcon.Close();
        }
      

  6.   

    不好意思贴成添加的了    void Bind(string XSXH)
        {
            
            string sSql = "SELECT [XSXX_XH], [XSXX_MM], [XSXX_XM], [XSXX_SFZH], [XSXX_XB], [XSXX_XSLB], [XSXX_JG], "+
                "[XSXX_CSRQ], [XSXX_ZZMM], [XSXX_XS], [XSXX_RXRQ], [XSXX_ZY], [XSXX_NJ], [XSXX_BJ], [XSXX_SM] FROM [XSXX]  " +
                "WHERE ([XSXX_XH] = '"+XSXH+"') " ;
            string sTmp;
            sqlcon = new SqlConnection(sConnStr);
            sqlcon.Open();
            SqlDataReader dr;
            SqlCommand sc = new SqlCommand(sSql, sqlcon);
            dr = sc.ExecuteReader();
            if (dr != null)
            {
                if (dr.Read())
                {
                    lblXH.Text = XSXH;
                    tbxMM.Text = dr["XSXX_MM"].ToString().Trim();
                    tbxXM.Text = dr["XSXX_XM"].ToString().Trim();
                    tbxSFZH.Text = dr["XSXX_SFZH"].ToString().Trim();
                    //sTmp = "";
                    sTmp = dr["XSXX_XB"].ToString().Trim();
                    ddlXB.SelectedIndex = ddlXB.Items.IndexOf(ddlXB.Items.FindByValue(sTmp));
                    //sTmp = "";
                    sTmp = dr["XSXX_XSLB"].ToString().Trim();
                    ddlXSLB.SelectedIndex = ddlXSLB.Items.IndexOf(ddlXSLB.Items.FindByValue(sTmp));
                    tbxJG.Text = dr["XSXX_JG"].ToString().Trim();
                    tbxCSRQ.Text =Convert.ToDateTime(dr["XSXX_CSRQ"].ToString().Trim()).ToShortDateString();
                    //sTmp = "";
                    sTmp = dr["XSXX_ZZMM"].ToString().Trim();
                    ddlZZMM.SelectedIndex = ddlZZMM.Items.IndexOf(ddlZZMM.Items.FindByValue(sTmp));
                    //sTmp = "";
                    sTmp = dr["XSXX_XS"].ToString().Trim();
                    ddlXSXS.SelectedIndex = ddlXSXS.Items.IndexOf(ddlXSXS.Items.FindByValue(sTmp));
                    tbxRXRQ.Text = Convert.ToDateTime(dr["XSXX_RXRQ"].ToString().Trim()).ToShortDateString();
                    //sTmp = "";
                    sTmp = dr["XSXX_ZY"].ToString().Trim();
                    ddlXSZY.SelectedIndex = ddlXSZY.Items.IndexOf(ddlXSZY.Items.FindByValue(sTmp));
                    //sTmp = "";
                    sTmp = dr["XSXX_NJ"].ToString().Trim();
                    ddlXSNJ.SelectedIndex = ddlXSNJ.Items.IndexOf(ddlXSNJ.Items.FindByValue(sTmp));
                    tbxBJ.Text = dr["XSXX_BJ"].ToString().Trim();
                    if (dr["XSXX_SM"] != DBNull.Value)
                    {
                        tbxSM.Text = dr["XSXX_SM"].ToString().Trim();
                    }
                    else
                    {
                        tbxSM.Text = "无";
                    }
                }
            }
            sqlcon.Close();    }