用户表
 a a a a a 类型 a a
 * * * * *  2   * * 用户类型表
   type     flag
  管理员     4
  斑竹       3
   用户      2
   tt        1
 我在datalist 里的编辑模板写<asp:DropDownList runat="server" id="ddl_usertype"></asp:DropDownList> 用户类型,下拉菜单. 想让菜单的默认值和从用户表里读出的值对应并显示  比如用户类型是 2 ,那么下拉菜单就显示 "用户", 4 就显示"管理员", 主要是2个表,俺不会弄
--------------------------------------------------------------------------------------
 还有就是用户密码用了 sha1加密, 编辑的时候读取的是 加密字符串, 但是点更新到数据库的话,又会吧这个加密字符串加密 ,这样就会出问题, 有没有办法在编辑的情况下,把sha1欢迎成原密码? 如果真补能原因的话,怎么判定?如果改了密码的话就加密入库,如果没改还是那段密文的话就不加密按原来的入库??

解决方案 »

  1.   

    <asp:DropDownList ID="dlt1" Runat="server" SelectedValue='<%# DataBinder.Eval( Container.DataItem,"quanxian").ToString() %>'>
    <asp:ListItem Value="1">管理员</asp:ListItem>
    <asp:ListItem Value="2">普通管理员</asp:ListItem>
    </asp:DropDownList>这里有个quanxian字段,里面保存的就是value值,你的前台可以先写上这样.然后值也都写上去,然后这里的value跟quanxian里的一样,这样他就会根据数据库里的值选中了.第二个问题的话,密码是无法还原的,你可以在datagrid里面放个隐藏的控件保存这个密码.然后在要修改进数据库的时候,取出这个隐藏的控件的值跟现在的比较,如果不同则加密新的,不然不改变则可.
      

  2.   

    1.从DS中绑定
    this.dpdAreas.DataTextField  = "AreaName";
    this.dpdAreas.DataValueField = "AreaID";
    this.dpdAreas.DataSource = DS;
    this.dpdAreas.DataBind();你的DS中必须有AreaName和AreaID两个字段
    2.自定义数据绑定
    for(int i = 10;i <= 50; i += 10)
    {
    ListItem ls = new ListItem();
    ls.Text = i.ToString()+"人";
    ls.Value = i.ToString();
    this.ddlDisplayNum.Items.Add(ls);
    }
    this.ddlDisplayNum.Items.Add(new ListItem("全部",""));  
    this.ddlDisplayNum.SelectedValue = "20";
      

  3.   

    谢谢大家的支持,不过你们没有弄懂我的意思,我已经实现了绑定,算了,给你们看代码吧---------------下拉列表绑定---------------------------private void dl_user_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
    {
    DropDownList ddl_usertype=(DropDownList)e.Item.FindControl("ddl_usertype"); 
    DropDownList ddl_userlock=(DropDownList)e.Item.FindControl("ddl_userlock");
    if (e.Item.ItemType == ListItemType.EditItem )
    {
    ddl_band(ddl_usertype,"[user_type]","type","flag");
    ddl_band(ddl_userlock,"[user_lock]","lock","flag");
    }
    } private void ddl_band(System.Web.UI.WebControls.DropDownList ddl_name,string sql_from,string TextField,string ValueField)
    {

    string sql="select * from "+sql_from+" order by id asc";
    SqlConnection conn=new SqlConnection(conn_str) ;
    SqlCommand run_sql=new SqlCommand (sql,conn);
    conn.Open (); 
    SqlDataReader rd=run_sql.ExecuteReader ();
    ddl_name .DataSource =rd;
    ddl_name .DataTextField=TextField;
    ddl_name .DataValueField =ValueField;
    ddl_name.DataBind ();
    rd.Close ();
    conn.Close ();

    }
    ----------------------------绑定结束----------------------------------------------------------前台代码--------------------------------
    <asp:DropDownList runat="server" id="ddl_usertype"></asp:DropDownList></TD>
    <TD style="HEIGHT: 25px" width="67" bgColor="#ffffff">用户状态</TD>
    <TD style="HEIGHT: 25px" width="189" bgColor="#ffffff">
    <asp:DropDownList runat="server" id="ddl_userlock"></asp:DropDownList></TD>
    ----------------------------代码结束--------------------------------楼上兄弟说的<asp:DropDownList ID="dlt1" Runat="server" SelectedValue='<%# DataBinder.Eval( Container.DataItem,"quanxian").ToString() %>'>在我这里没法实现,后台直接绑定的, 跟不出SelectedValue= 这个属性, 即使跟出了, <%#  %>的取值是从数据库1 里得出得值, 只有 1 2 3 4 等,但是下拉列表是从数据库2 里读得值.
     我得要求是 数据库1得值" 2"= 数据库2得值 "2" 得时候, 下拉列表就显示 2对于得TextField("用户")