管理员可以修改用户权限,即设置用户组为普通用户还是管理员。
我在一个Repeater中显示用户表的信息,其中用户组用一个DropdowmList表示。
管理员在设置了几个用户的权限后,想点击提交按钮将Repeater的数据提交到数据库,应该怎么做?我记得以前用EF实体的时候,有个直接的提交方法,很方便。
现在我用的是强类型DataSet,应该怎么实现呢?如果能够得到管理员修改过的记录,再得到相应记录的UserID,实现起来就简答多了。关键是提交时如何得知哪些记录是修改过的(脏数据)?

解决方案 »

  1.   

    循环
    Repeater1.Items,FindControl找到输入的内容
      

  2.   

    用事务
    http://blog.sina.com.cn/s/blog_4b6c8ec30100d50w.html
    http://blog.tianya.cn/blogger/post_show.asp?BlogID=66841&PostID=1888230
    参考。
      

  3.   


    Repeater没有ItemUpdating事件吧,应该写在哪里呢?在ItemUpdating事件里可以进行更新前的处理,找到控件并获取控件的值。初学者,请不吝赐教。
      

  4.   


    怎么把修改的内容ID放到隐藏字段呢?ItemTemplate中的DropDownlist可以添加SelectIndexChanged事件吗?
      

  5.   

    不用什么隐藏字段,下面是一个GridView的例子,道理都一样的
    </p>
    <xmp>
    <%@ Page Language="C#" Debug="true" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <script runat="server">
    string[] ClassNameArray = { "大学", "中学", "高中" };//初始化原来的值
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
      if (e.Row.RowType == DataControlRowType.DataRow)
      {
        System.Data.DataRowView drv = (System.Data.DataRowView)e.Row.DataItem;
        RadioButtonList rbl = (RadioButtonList)e.Row.FindControl("txtGender");
        if (rbl != null)
        {
          if ((bool)drv["Gender"])
          {
            rbl.Items.FindByText("男").Selected = true;
          }
          else
          {
            rbl.Items.FindByText("女").Selected = true;
          }
        }    DropDownList ddl = (DropDownList)e.Row.FindControl("txtClassName");
        if (ddl != null)
        {
          ddl.Items.FindByText(drv["ClassName"].ToString()).Selected = true;
        }
      }
    }// 初始化项目列表
    protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
    {
      if (e.Row.RowType == DataControlRowType.DataRow)
      {
        DropDownList ddl = (DropDownList)e.Row.FindControl("txtClassName");
        ddl.DataSource = ClassNameArray;
        ddl.DataBind();
      }
    }//处理提交的数据
    protected void XianhuiMeng_Click(object sender, EventArgs e)
    {
      foreach (GridViewRow gvr in GridView1.Rows)
      {
        string tGender = ((RadioButtonList)gvr.FindControl("txtGender")).SelectedValue;
        SqlDataSource1.UpdateParameters.Add(new Parameter("@Title", TypeCode.String, ((TextBox)gvr.FindControl("txtTitle")).Text));
        SqlDataSource1.UpdateParameters.Add(new Parameter("@Gender", TypeCode.Boolean, (tGender == "男" ? "True" : "False")));
        SqlDataSource1.UpdateParameters.Add(new Parameter("@ClassName", 
                       TypeCode.String, ((DropDownList)gvr.FindControl("txtClassName")).SelectedValue));
        SqlDataSource1.UpdateParameters.Add(new Parameter("@id", TypeCode.Int32, GridView1.DataKeys[gvr.DataItemIndex].Value.ToString()));
        SqlDataSource1.Update();
        SqlDataSource1.UpdateParameters.Clear();
      }
      Response.Redirect(Request.UrlReferrer.ToString());
    }
    </script><html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
    <title>同时编辑 GridView的 多行</title>
    </head>
    <body>
    <form id="form1" runat="server">
      <asp:GridView ID="GridView1" runat="server" Font-Size="12px" CellPadding="3" AutoGenerateColumns="False"
        DataKeyNames="id" DataSourceID="SqlDataSource1" OnRowDataBound="GridView1_RowDataBound"
        OnRowCreated="GridView1_RowCreated">
        <HeaderStyle BackColor="#EDEDED" />
        <Columns>
          <asp:TemplateField HeaderText="姓名">
            <ItemTemplate>
              <asp:TextBox ID="txtTitle" runat="server" Text='<%#Eval("Title") %>'></asp:TextBox>
            </ItemTemplate>
          </asp:TemplateField>
          <asp:TemplateField HeaderText="性别">
            <ItemTemplate>
              <asp:RadioButtonList ID="txtGender" runat="server" RepeatColumns="2">
                <asp:ListItem Text='男'></asp:ListItem>
                <asp:ListItem Text='女'></asp:ListItem>
              </asp:RadioButtonList>
            </ItemTemplate>
          </asp:TemplateField>
          <asp:TemplateField HeaderText="学历">
            <ItemTemplate>
              <asp:DropDownList ID="txtClassName" runat="server">
              </asp:DropDownList>
            </ItemTemplate>
          </asp:TemplateField>
        </Columns>
      </asp:GridView>
      <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\ASPNET20Book.mdb;Persist Security Info=True"
        ProviderName="System.Data.OleDb" SelectCommand="SELECT * FROM [Student]" 
        UpdateCommand="Update [Student] Set Title = @Title,Gender = @Gender,ClassName=@ClassName Where id=@id">
      </asp:SqlDataSource>
      <asp:Button ID="Button1" runat="server" Text="保存所有修改" OnClick="XianhuiMeng_Click" />
    </form>
    </body>
    </html>