在模板列中:设置一个label为   正常模式  用来显示当前用户的身份,并且设置其值为:
<asp:Label id="Label2" runat="server" CssClass="l12x">
<%# DataBinder.Eval(Container.DataItem,"systemUser_name") %>
</asp:Label>OK了  在运行的时候可以很好的显示systemUser_name字段但是在"编辑列"中加了一个DropDownList   希望可以修改用户的身份问!!:如何对这个"编辑列"中的DropDownList进行数据绑定???

解决方案 »

  1.   

    dropdownlist的datasource
    要给它的text和value分别赋值
      

  2.   

    应该在Editcommand事件里吧,关注
      

  3.   

    可以在ItemDataBound中,判斷是EditItem時就對dropdownlist赋值並讓他選中.
    If e.Item.ItemType = ListItemType.EditItem Then
                Dim ddllist As DropDownList
                ddllist = e.Item.Cells(2).FindControl("dropdownlistName")
                '對dropdownlist操作
    End If
      

  4.   

    给你写了段代码,自己看吧。。
    前台<asp:DataGrid AutoGenerateColumns="False" ID="MyDataGrid" Runat="server">
      <Columns>
        <asp:TemplateColumn>
          <ItemTemplate>
            <asp:DropDownList ID="DDL1" Runat="server"></asp:DropDownList>
          </ItemTemplate>
        </asp:TemplateColumn>
      </Columns>
    </asp:DataGrid>后台public class _Default : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.DataGrid MyDataGrid;
    public Hashtable HS=new Hashtable();
    private void Page_Load(object sender, System.EventArgs e)
    {
    HS.Add("0","值1");
    HS.Add("1","值2");
    HS.Add("2","值3");
    HS.Add("3","值4");
    MyDataGrid.DataSource=HS;
    MyDataGrid.DataBind();
    }//绑定部分
    private void MyDataGrid_ItemDataBound(object sender,DataGridItemEventArgs e)
    {
    if(e.Item.ItemIndex>=0 && e.Item.ItemIndex!=-1)
    {
    ((DropDownList)e.Item.FindControl("DDL1")).DataSource=HS;
    ((DropDownList)e.Item.FindControl("DDL1")).DataTextField="Value";
    ((DropDownList)e.Item.FindControl("DDL1")).DataBind();
    }
    }private void InitializeComponent()
    {    
    this.MyDataGrid.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.MyDataGrid_ItemDataBound);  //注意这里
    this.Load += new System.EventHandler(this.Page_Load);}
    }
    }
      

  5.   

    下面是我的代码:private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if(e.Item.ItemIndex<0) return; if(e.Item.ItemIndex==DataGrid1.EditItemIndex)
    {
    DataSet seDS=new DataSet();
    SystemUserData userData=new SystemUserData();
    seDS=userData.getAllSystemUser(); ((DropDownList)e.Item.Cells[3].Controls[1]).DataSource=seDS.Tables[0].DefaultView;
    ((DropDownList)e.Item.Cells[3].Controls[1]).DataTextField="systemUser_name";
    ((DropDownList)e.Item.Cells[3].Controls[1]).DataSource="systemUser_id";
    ((DropDownList)e.Item.Cells[3].Controls[1]).DataBind(); }

    }
    HTML中DG的编辑列为:
    <EditItemTemplate>
    <asp:DropDownList id="DropDownList1" runat="server" idth="80px">
    </asp:DropDownList>
    </EditItemTemplate>
    这一行报错:((DropDownList)e.Item.Cells[3].Controls[1]).DataBind();
    但是报错()-------------------------------------------------------------------求救DataBinder.Eval:“System.Char”不包含名称为 systemUser_name 的属性。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Web.HttpException: DataBinder.Eval:“System.Char”不包含名称为 systemUser_name 的属性。源错误: 
    行 85:  ((DropDownList)e.Item.Cells[3].Controls[1]).DataTextField="systemUser_name";
    行 86:  ((DropDownList)e.Item.Cells[3].Controls[1]).DataSource="systemUser_id";
    行 87:  ((DropDownList)e.Item.Cells[3].Controls[1]).DataBind();
    行 88: 
    行 89:  ((TextBox)e.Item.Cells[1].Controls[0]).Width=60;
     
      

  6.   

    你的意思是这个DropDownList是隐藏的吗。在编辑状态下才将它显示出来,并进行绑定,是这样么??
      

  7.   

    晕这不就是改一下MyDataGrid_ItemDataBound的代码么
    private void MyDataGrid_ItemDataBound(object sender,DataGridItemEventArgs e)
    {
        if(e.Item.ItemIndex>=0 && e.Item.ItemIndex!=-1)
        {
            if(MyDataGrid.EditItemIndex==e.Item.ItemIndex)
            {   
     ((DropDownList)e.Item.FindControl("DDL")).DataSource=HS;
     ((DropDownList)e.Item.FindControl("DDL")).DataTextField="Value";
     ((DropDownList)e.Item.FindControl("DDL")).DataBind();
            }
        }

    }如果还是解决不了就下载下边的那个示例自己看看代码,唉。。命苦,帮你做一个例子。
    http://www.sky-asp.net/Testing.rar
      

  8.   

    先綁定DG,後綁定DropDownList就可以了
      

  9.   

    lswweb兄弟的意思是    要把数据全都先放在Hashtable里吗?我想用DataSet进行绑定啊但是我在进行((DropDownList)e.Item.FindControl("DDL1")).DataBind();时就报错:DataBinder.Eval:“System.Char”不包含名称为 systemUser_name 的属性。
      

  10.   

    晕。。大哥,,放在什么里边无所谓不管是hashtable还是dataset都是一样的。。
    我用hashtable只不过是因为用它方便一些。。就报错:DataBinder.Eval:“System.Char”不包含名称为 systemUser_name 的属性。看看你sql语句中的查寻的字段名和
    DataTextField及DataValeField是不是不一至
      

  11.   

    我下班啦,,,,要回去了。。还不行就把你项目文件压缩一下。发到[email protected]这个邮箱,明天我上班时给你改一下算了。。
      

  12.   

    我是白痴!!!!!!!!!!!!!!!!!!%#%@#$^$%&$&&@$DG$%!@#@^&*!$#&^&晕~了~~~对不住各位     原来写的就是OK的是自己粗心了
    ((DropDownList)e.Item.Cells[3].Controls[1]).DataSource=seDS.Tables[0].DefaultView;
    ((DropDownList)e.Item.Cells[3].Controls[1]).DataTextField="systemUser_name";
    ((DropDownList)e.Item.Cells[3].Controls[1]).DataSource="systemUser_id";//这里错了:]
    ((DropDownList)e.Item.Cells[3].Controls[1]).DataBind();应该是
    ((DropDownList)e.Item.Cells[3].Controls[1]).DataValueField="systemUser_id"
    而不是
    ((DropDownList)e.Item.Cells[3].Controls[1]).DataSource="systemUser_id"
    我倒
      

  13.   

    顺便问一下现在的代码:
    ((DropDownList)e.Item.Cells[3].Controls[1]).DataSource=seDS.Tables[0].DefaultView;
    ((DropDownList)e.Item.Cells[3].Controls[1]).DataTextField="systemUser_name";
    ((DropDownList)e.Item.Cells[3].Controls[1]).DataValueField="systemUser_id";
    ((DropDownList)e.Item.Cells[3].Controls[1]).DataBind();
    ((DropDownList)e.Item.Cells[3].Controls[1]).Items.FindByValue("ttt").Selected=true;//注意这里执行这一句时:
    ((DropDownList)e.Item.Cells[3].Controls[1]).Items.FindByValue("ttt").Selected=true报错-------------------------------------------------------------------------------未将对象引用设置到对象的实例。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误: 
    行 88:((DropDownList)e.Item.Cells[3].Controls[1]).DataValueField="systemUser_id";
    行 89:((DropDownList)e.Item.Cells[3].Controls[1]).DataBind();
    行 90:((DropDownList)e.Item.Cells[3].Controls[1]).Items.FindByValue("ttt").Selected=true;
    行 91: 
    行 92:((TextBox)e.Item.Cells[1].Controls[0]).Width=60;
     
      

  14.   

    <asp:DataGrid AutoGenerateColumns="False" ID="MyDataGrid" Runat="server">
      <Columns>
        <asp:TemplateColumn>
          <ItemTemplate>
            <asp:DropDownList ID="DDL1" Runat="server" datasource=<%GetDataSet()%>></asp:DropDownList>
          </ItemTemplate>
        </asp:TemplateColumn>
      </Columns>
    </asp:DataGrid>.cs中:
    public DataSet GetDataSet()
    {
       DataSet ds;
       //取值填充到DatSet
       return ds; 
    }