是这样的,我做了个DATAGRID嘛,然后我里面有个列是显示用户权限的。然后用户的权限就只有两种,一种是“管理员”,一种是“普通管理员”,那么我在DATAGRID编辑修改的时候,可以修改用户的权限,比如可以把管理员修改成普通管理员,反之亦然!我写的代码是 <asp:TemplateColumn HeaderText="用户权限">
<HeaderStyle HorizontalAlign="Center"></HeaderStyle>
<ItemStyle Wrap="False" HorizontalAlign="Center" Width="100px"></ItemStyle>
<ItemTemplate>
<%# DataBinder.Eval( Container.DataItem,"quanxian") %>
</ItemTemplate>
<FooterStyle HorizontalAlign="Center"></FooterStyle>
<EditItemTemplate>
<asp:DropDownList ID="dlt1" Runat="server">
<asp:ListItem Selected="true" Value="管理员">管理员</asp:ListItem>
<asp:ListItem Value="普通管理员">普通管理员</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateColumn>修改是能修改了,可是每次默认的话,管理员是被选中的,可是问题是如果我选择要编辑的这个用户是普通管理员呢,那么dropdownlist应该是把普通管理员放在上面的可是代码我不知道怎么写啊,因为这里还要做判断啊,我不知道如何做判断啊,好像在DATAGRID里,我都手足无措了,帮帮我好吗?谢谢了,,,<%# DataBinder.Eval( Container.DataItem,"quanxian") %>这个是显示权限的,谢谢啦

解决方案 »

  1.   

    try<asp:DropDownList ID="dlt1" Runat="server" SelectedValue='<%# DataBinder.Eval( Container.DataItem,"quanxian").ToString() %>'>
    <asp:ListItem Value="管理员">管理员</asp:ListItem>
    <asp:ListItem Value="普通管理员">普通管理员</asp:ListItem>
    </asp:DropDownList>
      

  2.   

    不行啊,没selectedvalue这个属性啊
      

  3.   

    可以这样<asp:TemplateColumn HeaderText="分类名称">
    <ItemTemplate>
      <asp:DropDownList id="CateID" runat="server"></asp:DropDownList>
      <input type="hidden" id="Cid" runat="server" value='<%# DataBinder.Eval(Container.DataItem, "CobjectID")%>'/>
    </ItemTemplate>
    </asp:TemplateColumn>private void DataGridRss_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if(e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
    {
    DropDownList drCateID = (DropDownList)e.Item.FindControl("CateID");
    drCateID.DataValueField = "Value";
    drCateID.DataTextField = "Text";
    drCateID.DataSource = arrCate;
    drCateID.DataBind();
    for(int i = 0;i<drCateID.Items.Count;i++)
    {
    //Response.Write ("<li>" + drCateID.Items[i].Value + " = " + ((HtmlInputHidden)e.Item.FindControl("Cid")).Value);
    if(drCateID.Items[i].Value == ((HtmlInputHidden)e.Item.FindControl("Cid")).Value)
    {
    drCateID.SelectedIndex = i;
    }
    }
    }
    }
      

  4.   

    //假设您的DataGrid为: DataGrid1  ,其 DataSource=TB;
    在 DataGrid1.DataBind(); 后立即调用此函数:
    protected void SetDropDownListInDataGridSelectVaule()
    {
      int page=DataGrid1.CurrentPageIndex;//取得Grid的当前页
      int size=DataGrid1.PageSize;//取得Grid的分页大小
      for(int i=0;i<DataGrid1.Items.Count;i++)
       {
    try
    {
      DropDownList tempID=(DropDownList) DataGrid1.Items[i].FindControl["dlt1"];
      //假设:DataGrid1.DataSource=TB;
      tempID.SelectedValue=TB.Rows[page*size+i]["quanxian"].ToString();
    }
    catch{}
        }
    }
    多少给一些分了,老兄!新年呀!!~~~
      

  5.   

    //假设您的DataGrid为: DataGrid1  ,其 DataSource=TB;
    在 DataGrid1.DataBind(); 后立即调用此函数:(换页后也要调用)
    protected void SetDropDownListInDataGridSelectVaule()
    {
      int page=DataGrid1.CurrentPageIndex;//取得Grid的当前页
      int size=DataGrid1.PageSize;//取得Grid的分页大小
      for(int i=0;i<DataGrid1.Items.Count;i++)
       {
        try
        {
         DropDownList tempID=(DropDownList) DataGrid1.Items[i].FindControl["dlt1"];
         //假设:DataGrid1.DataSource=TB;
         tempID.SelectedValue=TB.Rows[page*size+i]["quanxian"].ToString();
         }
    catch{}
        }
    }
    多少给一些分了,老兄!新年呀!!~~~
      

  6.   

    我刚一下午啊,修改了一些啊,真的是从上午到现在这个问题还没解决,我真的快困惑死了!
    <asp:TemplateColumn HeaderText="用户权限">
    <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
    <ItemStyle Wrap="False" HorizontalAlign="Center" Width="100px"></ItemStyle>
    <ItemTemplate>
    <asp:Label ID="lbl1" Runat="server">
    <%# DataBinder.Eval( Container.DataItem,"quanxian") %>
    </asp:Label>
    </ItemTemplate>
    <FooterStyle HorizontalAlign="Center"></FooterStyle>
    <EditItemTemplate>
    <asp:Label ID="lbl2" Visible="False" Runat="server">
    <%# DataBinder.Eval( Container.DataItem,"quanxian") %>
    </asp:Label>
    <asp:DropDownList ID="dlt1" Runat="server">
    <asp:ListItem Value="超级管理员">超级管理员</asp:ListItem>
    <asp:ListItem Value="普通管理员">普通管理员</asp:ListItem>
    </asp:DropDownList>
    </EditItemTemplate>
    </asp:TemplateColumn>ASPX页面的代码现在是这样然后我在.vb文件里的databound写下这样的事件    Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
            Select Case e.Item.ItemType
                Case ListItemType.EditItem
                    Dim ddl As DropDownList
                    Dim lbl As Label
                    ddl = e.Item.FindControl("dlt1")
                    lbl = e.Item.FindControl("lbl2")
                    Response.Write("<script>alert('是" & lbl.Text & "');</script>")
                    If lbl.Text = "超级管理员" Then
                        ddl.Items(0).Selected = True
                    Else
                        ddl.Items(1).Selected = True
                    End If
            End Select
        End Sub可是无论怎么来,那个lbl.text值老是空的,太奇怪了,我现在是想得到他的值,从来来进行判断啊,但是始终没有办法,各位帮帮我好吗???就这个啊,!
      

  7.   

    用C# 是:
     for(int i=0;i<DataGrid1.Items.Count;i++)
       {
        try
        {
         Label templbl;
         templbl=(Label) DataGrid1.Items[i].FindControl["lbl"];     DropDownList tempdlt1;
         tempdlt1=(DropDownList) DataGrid1.Items[i].FindControl["dlt1"];    if(templbl.Text=="超级管理员")
          tempdlt1.SelectedValue="超级管理员";
        else
          tempdlt1.SelectedValue="普通管理员";    
        }
    }
      

  8.   

    简单点就写个函数转一下public int myfun(string v)
    {
        if (v == "操作员")
           return 1;
        return 0;
    }
    <asp:DropDownList ID="dlt1" Runat="server" SelectedIndex='<%# myfun(DataBinder.Eval( Container.DataItem,"quanxian").ToString()) %>'>
      

  9.   

    可是无论怎么来,那个lbl.text值老是空的应该是: <%# DataBinder.Eval( Container.DataItem,"quanxian") %>
    quanxian  中的数据有问题了上面的方法不会有错的.不过在使用上述代码前不要忘记了 DataGrid1.DataBind();
      

  10.   

    哎,用个DATAGRID这么难,哎,还不如用TABLE。真是郁闷到家了。心情差到极点,以后再也不会用DATAGRID,效率那么低
      

  11.   

    果然是思归大哥的方法可以,太奇怪了,VS。NET提示没那个属性,然后我以为是思归大哥记错了。哎,没想到,既然是这样。太晕了,我晕了一天了。。既然这样解决了,此时此克,我真不知道该如何高兴啊。。真的粉激动粉激动感谢这里所有的朋友的帮助!再次谢谢你们啦!