现在repeater实现了分页、查询的功能,现在想添加点击单元格修改内容并保存进数据库的功能!
目前可以点击之后出现textbox并且修改,但是保存不进数据库,我想添加一个button2按钮,修改页面之后,点击保存按钮,就能将这个repeater的当前页的内容提交数据库并保存。目前我的全部代码如下:
 public static string sort { set; get; }
    private static string strsql;
    const string vsKey = "searchCriteria"; //ViewState key
    SqlConnection con = new SqlConnection("server=localhost;database=moldsystem;uid=sa;pwd=sa");//这个是全局变量
   
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            searchOrders(string.Empty);
        }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        AspNetPager1.CurrentPageIndex = 1;
        string s = " where customer_name =" + TextBox4.Text;
        ViewState[vsKey] = s;
        searchOrders(s);
    }
    void searchOrders(string sWhere)
    {
        //SqlDataSource1.SelectCommand = "select * from " + sWhere + " ";
        //DataView dv = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty);
        DataSet ds = new DataSet();
        con.Open();
        SqlDataAdapter sda = new SqlDataAdapter("select * from data_mold " + sWhere + " ", con);
        sda.Fill(ds, "name");
        con.Close();
        AspNetPager1.RecordCount = ds.Tables["name"].Rows.Count;        PagedDataSource pds = new PagedDataSource();
        pds.DataSource = ds.Tables["name"].DefaultView;
        pds.AllowPaging = true;
        pds.CurrentPageIndex = AspNetPager1.CurrentPageIndex - 1;
        pds.PageSize = AspNetPager1.PageSize;
        Repeater1.DataSource = pds;
        Repeater1.DataBind();
    }
    protected void AspNetPager1_PageChanging(object src, Wuqi.Webdiyer.PageChangingEventArgs e)
    {
        //this.AspNetPager1.CurrentPageIndex = e.NewPageIndex;
        searchOrders((string)ViewState[vsKey]);
    }
    protected void AspNetPager1_PageChanged(object src, EventArgs e)
    {
        searchOrders((string)ViewState[vsKey]);
    }
    //protected void btn_all_Click(object sender, EventArgs e)
    //{
       // ViewState[vsKey] = null;
       // btn_all.Enabled = false;
      //  AspNetPager1.CurrentPageIndex = 1;
      //  searchOrders(null);
    //}
    protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
    {    }
    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            for (int i = 0; i < e.Item.Controls.Count; i++)
            {
                Control control = e.Item.Controls[i];
                GetControl(control);
            }
        }
    }
    protected void GetControl(Control control)
    {
        foreach (Control c in control.Controls)
        {            if (c.HasControls())
            {
                GetControl(c);
            }
            else
            {
                if (c.GetType().ToString() == "System.Web.UI.WebControls.TextBox")
                {
                    TextBox txt = c as TextBox;
                    txt.Attributes.Add("onclick", "Write('" + txt.ClientID + "');");
                    txt.Attributes.Add("onblur", "Update('" + txt.ClientID + "');");
                }
            }
        }
    }
    protected void ddlp_SelectedIndexChanged(object sender, EventArgs e)
    {//脚模板中的下拉列表框更改时激发    }
    protected void Button2_Click(object sender, EventArgs e)
    {    }

解决方案 »

  1.   


     <style type="text/css">
      .textbox
      {
      border-width: 0px;
      border-bottom-width: 1px;
      border-bottom-style: dotted;
      border-bottom-color: Gray;
      width: 120px;
      text-align: left;
      }
      .textbox1
      {
      border-width: 1px;
      border-bottom-width: 1px;
      border-bottom-style: dotted;
      border-bottom-color: Gray;
      width: 120px;
      text-align: left;
      }
      .tr
      {
      width:500px;
      }
      .tr td
      {
      width: 125px;
      text-align: left;
      border-width: 1px;  
      }
      </style>    <script type="text/javascript">
      function Write(obj)
      {
      document.getElementById(obj).readOnly=false;
      document.getElementById(obj).focus();
      document.getElementById(obj).className="textbox1";
      }
      function Update(obj)
      {
        
      document.getElementById(obj).readOnly=true;
      document.getElementById(obj).className="textbox";
      //ajax
      //alert("修改成功");
      }
    </script>
        <div>
        
            <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>
        
            <br />
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                    <asp:Repeater ID="Repeater1" runat="server" 
        OnItemCommand="Repeater1_ItemCommand"  
        OnItemDataBound="Repeater1_ItemDataBound">
                        <HeaderTemplate>
                            <table border="1" width="400px" style="border-style: solid; border-width: 1px">
                                <tr>
                                    <td>
                                        用户名</td>
                                    <td>
                                        公司名称</td>
                                    <td>
                                        产品名称</td>
                                </tr>
                            </table>
                        </HeaderTemplate>
                        <ItemTemplate>
                            <div id="itemDiv" runat="server" width="500px" >
                                <table width="500px" border="0" cellpadding="0" cellspacing="0">
                                    <tr class="tr">
                                        <td>
                                            <asp:TextBox ID="TextBox1" CssClass="textbox" ReadOnly="true" runat="server" 
              Text='<%# Eval("customer_name")%>'></asp:TextBox>
                                        </td>
                                        <td>
                                            <asp:TextBox ID="TextBox2" CssClass="textbox" ReadOnly="true" runat="server" 
               Text='<%# Eval("company_name")%>'></asp:TextBox>
                                        </td>
                                        <td>
                                            <asp:TextBox ID="TextBox3" CssClass="textbox" ReadOnly="true" runat="server" 
               Text='<%# Eval("product_name")%>'></asp:TextBox>
                                        </td>
                                    </tr>
                                </table>
                            </div>
                        </ItemTemplate>
                        <FooterTemplate>
                            <%--这是脚模板--%>
                            <tr>
                                <td colspan="2" style="font-size:12pt;color:#0099ff; background-color:#e6feda;">
                                    共<asp:Label ID="lblpc" runat="server" Text="Label"></asp:Label>
                                    页 当前为第 
                                    <asp:Label ID="lblp" runat="server" Text="Label"></asp:Label>
                                    页 
                                    <asp:HyperLink ID="hlfir" runat="server" Text="首页"></asp:HyperLink>
                                    <asp:HyperLink ID="hlp" runat="server" Text="上一页"></asp:HyperLink>
                                    <asp:HyperLink ID="hln" runat="server" Text="下一页"></asp:HyperLink>
                                    <asp:HyperLink ID="hlla" runat="server" Text="尾页"></asp:HyperLink>
                                    跳至第 
                                    <asp:DropDownList ID="ddlp" runat="server" AutoPostBack="true" 
                    OnSelectedIndexChanged="ddlp_SelectedIndexChanged" >
                                    </asp:DropDownList>
                                    页 
                                </td>
                            </tr>
                            </table>
                        </FooterTemplate>
                    </asp:Repeater>
      

  2.   


      foreach(RepeaterItem item Repeater1.Items)
                    {
                        TextBox p=item.FindControl("TextBox4") as TextBox ;
                         string s=p.Text;
                    }
      

  3.   

    遍历行取值
    foreach(RepeaterItem item Repeater1.Items)
    {
      TextBox txt=item.FindControl("txt") as TextBox ;
      if(txt!=null){}
    }
      

  4.   

    晕撒,我本来想100分问的,忘了设置了,一会完事结贴时能加吧。我想获取这当前页的数据,然后保存进数据库,1楼的大大,我觉得你的意思是获取了修改单元格的数据!我不明白如何获取这个页面上的repeater的数据,并且根据主键如果保存进数据库!
      

  5.   

    NO。。上边的代码是获取repeater内所有行内的textbox内的数据
    并不只是修改过的textbox