在下刚接触ASP.NET,用的是VS2005,C#,SQL SERVER2005开发环境,现在有一问题困扰,不知道可否实现,如何实现。在此求教各位坛友达人。
我的问题是这样的:我有一张用户表,另有角色表
部分数据结构如下
users 表
usercode   username  roleid.....roles 表
roleid    rolename两表通过roleid进行关联。
在增加用户的窗体中,有一个用于浏览用户信息的gridview控件,我想在查询的时候,在该gridview控件中,角色那个列显示角色的名称而不是数字的roleid ,当选择某一行进行编辑的时候,角色这一列可以下拉选择,下拉显示的也是汉字的名称
不知道是否可以实现这样的效果,该怎样实现?

解决方案 »

  1.   

      <asp:TemplateField HeaderText="角色">
                        <EditItemTemplate>
                            &nbsp;
                        </EditItemTemplate>
                        <ItemTemplate>
                            &nbsp;<asp:DropDownList ID="ddlRoleName" runat="server" >
                            </asp:DropDownList>
                        </ItemTemplate>
                    </asp:TemplateField>往模板里面啦进去一个下拉列别就行了。
    然后给你代码。    protected void gvProType_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {                 Role RoleId = RoleManager.GetRoleNameByRoleId(RoleId);//这参数自己想办法传进去
              
          
                DropDownList ddlRole = (DropDownList)e.Row.FindControl("ddlRoleName");
                ddlRole.DataSource = RolesManage.GetRoles();
                ddlRole.DataTextField = "RoleName";
                ddlRole.DataValueField = "RoleId";
                ddlRole.SelectedValue = RoleId();
                ddlRole.DataBind();        }
        }
      

  2.   

    照1楼的做就可以了,绑定时保证数据源内包括roleid  rolename 两字段
      

  3.   

    完全可以,简单点就写个判断就OK了
     <asp:TemplateField HeaderText="來源形態">
                                        <EditItemTemplate>
                                            <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("SourceType") %>'></asp:TextBox>
                                        </EditItemTemplate>
                                        <ItemTemplate>
                                            <asp:Label ID="Label1" runat="server" Text='<%#Eval("SourceType").ToString().Trim() == "0" ? "來料" : "一般貿易" %>'></asp:Label>
                                        </ItemTemplate>
                                    </asp:TemplateField>由于我这里不用去查数据库,所以就写了个简单的三元表达式,你可以建个CS文件,然后写上方法,然后在这里调用
      

  4.   

    双向绑定
    gridview中某列拉个 DropDownList 列来源绑定数据源 和 设置值绑定
      

  5.   

    感谢各位,终于解决了正确绑定值的问题,参考了zengfanxing的方法
    我的最终方法是这样的:
    定义了一个绑定数据到DDL的方法ddlbind()
    然后HTML中 
     <ItemTemplate>
           <asp:DropDownList ID="ddlrole" runat="server" DataSource='<%# ddlbind()%>'    DataValueField="roleid" DataTextField="rolename"> 
           </asp:DropDownList>
     </ItemTemplate>然后参考zengfanxing 在 gridview的RowDataBound事件中:
    if (e.Row.RowType == DataControlRowType.DataRow)
     {
        DataRowView drv = (DataRowView)e.Row.DataItem;
        DropDownList ddlRole = (DropDownList)e.Row.FindControl("ddlRole");
        ddlRole.SelectedValue = drv.Row["roleid"].ToString();
     }暂时解决了正常显示正确值的问题,编辑的功能还没尝试是否正常,明天再看,再次感谢各位~