我现在用datalist  来显示数据<%#Eval("id") %>    <%#Eval("gongsi") %>  <%#Eval("bumen") %>   <%#Eval("yuangong") %>  <%#Eval("zu") %>  
我希望这个<%#Eval("zu") %>  字段能直接从数据库里读出  取出 不重复的组名
 <asp:DataList ID="DataList1" runat="server">
        <ItemTemplate>
        <table>
        <tr>
        <td><%#Eval("id") %> </td>
        <td> <%#Eval("gongsi") %> </td>
        <td> <%#Eval("bumen") %> </td>
         <td> <%#Eval("yuangong") %> </td>
         <td>
            <asp:DropDownList ID="DropDownList4" runat="server">
            </asp:DropDownList>这里我打算显示 我取出的不重复的组名, </td>
        </tr>
        </table>
        </ItemTemplate>        </asp:DataList>有谁能帮我搞定下代码吗··谢谢了啊··就是那里DropDownList   我实在是不知道怎么样取到 不重复的组名
再第二步  我能够动态把 员工 选择性的 放到组中去···就是接下去 的 的是    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
这里也希望谁能帮我下···
    }

解决方案 »

  1.   

    在DataList的ItemDataBind中去绑定吧!
      

  2.   

    ItemDataBind事件中
    DropDownList  ddl = (DropDownList4)e.Item.FindControl("DropDownList4");
    然后查询数据库
    绑定ddl
      

  3.   

    ItemDataBind事件中 
    DropDownList  ddl = (DropDownList4)e.Item.FindControl("DropDownList4"); 
    然后查询数据库 
    绑定ddl 
    这里谁能和我说下具体 的代码是怎么写吗··
      

  4.   

    有谁能帮我看下  这个错误啊····
    编译器错误信息: CS0246: 找不到类型或命名空间名称“DropDownList4”(是否缺少 using 指令或程序集引用?)
      

  5.   


    DropDownList  ddl = (DropDownList4)e.Item.FindControl("DropDownList4"); 
    ddl.Items.Add();//动态添加组名
      

  6.   

    DropDownList  ddl = (DropDownList4)e.Item.FindControl("DropDownList4"); 
    谁可以告诉我下吗··这个 应该写在哪里··
      

  7.   

    aspx页面:<asp:repeater id="Repeater1" runat="server" onitemdatabound="Repeater1_ItemDataBound">
                <itemtemplate>
                <div>
                    <asp:dropdownlist id="drpUserList" autopostback="true" onselectedindexchanged="myDrop_SelectedIndexChanged" runat="server"></asp:dropdownlist>
                </div>
                </itemtemplate>
            </asp:repeater>aspx.cs页面 protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem||e.Item.ItemType==ListItemType.EditItem)
            {
                DropDownList myDrop = e.Item.FindControl("drpUserList") as DropDownList;
                if (myDrop.Items.Count == 0)
                {
                    myDrop.Items.Add(new ListItem("a", "1"));
                    myDrop.Items.Add(new ListItem("b", "2"));
                    myDrop.DataBind();
                }
            }
        }    protected void myDrop_SelectedIndexChanged(object sender,EventArgs e)
        {
            Response.Write(((DropDownList)sender).SelectedIndex.ToString());
        }
      

  8.   

    DropDownList  ddl = (DropDownList4)e.Item.FindControl("DropDownList4"); 
    ddl.Items.Add();//
      

  9.   

    为什么不在数据库里就把组名选好呢,那样更方便啊!
    比如加dintinct或者用groupby来查询!
      

  10.   


    因为根本看出不出你这里的业务逻辑,所以及其难以回答。要从数据源的单个对象绑定的东西,你总要讲明一个与“id、gongsi、bumen、yuangong”等价的单个记录中的字段吧。如果绑定的东西不是来源于字段,那么你就考虑的偏到绑定上了。如果是从字段中来的,例如从字段abc来的,我写个demo:
     <ItemTemplate>
             <asp:DropDownList runat="server" ID="myList" DataSource='<%# this.GetRandomString((string)Eval("abc")) %>'/>
     </ItemTemplate>而后在代码中实现这个函数:protected string[] GetRandomString(string input)  //
    {
        string[] ret = new string[10];
        for (int i = 0; i <= 9; i++)
            ret[i] = input + "_" + i.ToString();
        return ret;}这里就根据输入input生成绑定表达式的数据源。对,这就是绑定表达式的让人很舒服的写法。但是不知道你是什么样的业务逻辑,你的abc是来自于每一个记录对象的字段吗?
      

  11.   

    对于你第二个问题,我也是没有立刻明白你在问什么。当记录被提交(Update)时,比如你可以得到这一行对象,例如在e.Row里边,那么你可以写
        (e.Row.FindControl("DropDownList4") as DropdownList).SelectedValue
    来获得选择的记录,你无需去处理下拉控件的事件啊?!我不太明白你的处理流程,或者你可能也没有想清楚。
      

  12.   

    绑定表达式的好处很明显。过去asp.net1.1的绑定表达式不支持Eval(反射计算),因此你的代码需要去查找界面上的控件,然后绑定数据源。这样,你写的代码就混合了MVC功能。而使用绑定表达式,你可以抛开界面控件的考虑来写纯粹的业务逻辑层代码,然后用绑定表达式非常简短直观地绑定(声明)到界面上就一步到位了。
      

  13.   

    当然啦,我上面的GetRandomString函数只是一个Demo,用了最少的逻辑代码。实际使用时,你可以将生成的查询结果保存在一个列表中,每一次进入这个函数时先去查询有没有刚刚计算过这个结果,有就直接拿出缓存,而不是重复计算。
      

  14.   

    有没有谁有 datalist  和  DropDownList 的例子啊·· 给我看下啊··我实在 是 需要很实际点的代码啊··
      

  15.   

    DropDownList  ddl = (DropDownList4)e.Item.FindControl("DropDownList4");  写在datalist 中 写在哪个事件里啊·
      

  16.   

    我现在用datalist  来显示数据 <%#Eval("id") %>    <%#Eval("gongsi") %>  <%#Eval("bumen") %>  <%#Eval("yuangong") %>  <%#Eval("zu") %>  
    我希望这个 <%#Eval("zu") %>  字段能直接从数据库里读出  取出 不重复的组名 
    <asp:DataList ID="DataList1" runat="server"> 
            <ItemTemplate> 
            <table> 
            <tr> 
            <td> <%#Eval("id") %> </td> 
            <td> <%#Eval("gongsi") %> </td> 
            <td> <%#Eval("bumen") %> </td> 
            <td> <%#Eval("yuangong") %> </td> 
            <td> 
                <asp:DropDownList ID="DropDownList4" runat="server"> 
                </asp:DropDownList>这里我打算显示 我取出的不重复的组名, </td> 
            </tr> 
            </table> 
            </ItemTemplate>         </asp:DataList> 
      

  17.   

    ItemDataBind事件啊这个是datalist绑定一行触发一次啊
      

  18.   

     我写进了 ItemDataBind事件  了啊··· 但是报错啊··
    编译器错误信息: CS0246: 找不到类型或命名空间名称“DropDownList4”(是否缺少 using 指令或程序集引用?)
      

  19.   

    我现在是步知道 后面的BUTTON事件应该怎么写啊···谁来帮我一下啊·
      

  20.   

        protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
            {
                DropDownList dropTemp;
                //你的数据源最好是DataSet
                string state = (e.Item.DataItem as System.Data.DataRowView).Row["state"].ToString();
                dropTemp = e.Item.FindControl("DropDownList1") as DropDownList;
                dropTemp.DataSource = BindDropDownList();//你绑定DropDownList的方法
                dropTemp.DataTextField = "state";
                dropTemp.DataBind();
                dropTemp.SelectedIndex = dropTemp.Items.IndexOf(dropTemp.Items.FindByText(state));
            }
        }
      

  21.   

    (DropDownList)e.Item.FindControl("DropDownList1") 
    ...............
    这样的代码也要别人粘出来吗?
      

  22.   

    我现在打算里面放一个 label  如果 改过就显示    已经修改过 了········
    但是我 一直 取步到这个label的值··