none
多个gridview的AJAX怎么实现? RRS feed

  • 问题

  • 现页面上有三个gridview,分别为gv1、gv2、gv3。gv1中的buttom点击后会对gv2的行产生变化,gv2中的buttom点击后会对gv2和gv1的行产生变化,gv3中的buttom点击后会对gv1的行产生变化,这样如何实现AJAX无刷?求大概的代码。谢谢
    2014年7月14日 4:11

全部回复

  • 你好,

    你需要使用updatepanel 实现页面的刷新。因为需要点击gridview中的Button来更新其他的gridview的数据,所以来说,你需要设置triggers为其他的控件。

    我写了个只有两个gridview,但是点击各自的按钮都会去操作对方的行数据。

     <form id="form1" runat="server">
        <div>
            <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
            <asp:UpdatePanel ID="panle1" runat="server" UpdateMode="Conditional">
                 <Triggers>
                     <asp:AsyncPostBackTrigger ControlID="gridview2" EventName="RowCommand" />
                 </Triggers>
                <ContentTemplate>       
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowCommand="GridView1_RowCommand" EnableViewState="true">
                <Columns>
                     <asp:TemplateField HeaderText="IDdd">
                        <ItemTemplate>
                            <asp:TextBox ID="txt" runat="server" Text="gridview1" />
                            <asp:Button ID="btn" runat="server" Text="xx" CommandName="click"/>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>     
            </asp:GridView>
             </ContentTemplate>
            </asp:UpdatePanel>
            <asp:UpdatePanel ID="panel2" runat="server" UpdateMode="Conditional">
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="GridView2" EventName="RowCommand" />
                </Triggers>
                <ContentTemplate>
                   <asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="false" OnRowCommand="GridView2_RowCommand" EnableViewState="true" OnRowDataBound="GridView2_RowDataBound">
                  <Columns>
                     <asp:TemplateField HeaderText="IDdd">
                        <ItemTemplate>
                            <asp:TextBox ID="txt" runat="server" Text="gridview2" />
                            <asp:Button ID="btn" runat="server" Text="xx" CommandName="click"/>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>    
            </asp:GridView>
                </ContentTemplate>
            </asp:UpdatePanel>
        </div>
        </form>

      protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    BindData();
                }
            }
    
            protected void btn_Click(object sender, EventArgs e)
            {
    
            }
    
            public void BindData()
            {
                string sql = "select * from Cus";
                string connstring = "xx;";
                SqlConnection conn = new SqlConnection(connstring);
                conn.Open();
                SqlCommand cmd = new SqlCommand(sql, conn);
                SqlDataAdapter sda = new SqlDataAdapter(cmd);
                DataSet ds = new DataSet();
    
                sda.Fill(ds, "aa");
                conn.Close();
    
                GridView1.DataSource = ds;
                GridView1.DataBind();
    
                GridView2.DataSource = ds;
                GridView2.DataBind();
    
    
            }
    
            protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
            {
                if (e.CommandName == "click") {
                  //这里更新第二个gridview的数据
                    GridViewRow gvr = GridView2.Rows[2];
                    TextBox tx = (TextBox)gvr.FindControl("txt");
                    tx.Text = "10";
      
                 
                }
            }
    
            protected void GridView2_RowCommand(object sender, GridViewCommandEventArgs e)
            {
    
            }
    
            protected void GridView2_RowDataBound(object sender, GridViewRowEventArgs e)
            {
    
            }

    2014年7月15日 3:18