GridView(或者Datalist或Repeter) 某列 无刷新能实现吗在GridView打开窗口操作后返回使GridView某列有更新的模板列无刷新更新,不是整个GridView刷新只是局部一列刷新,不知道如何实现,有没有人看过类似网站报网址,或告诉我如何实现,想了好久了,高手们帮帮忙

解决方案 »

  1.   

    当然可以的
    你放好多个UPDATEPANEL就是了,设置自动刷新
      

  2.   

    如何放呀好多个UPDATEPANEL,不是整个GridView刷新比如只是局部一列刷新
      

  3.   

    手写 AJAX的代码 更新数据列
      

  4.   

    呵呵 简单点就是更新的时候触发前台脚本,用HttpRequest访问后台数据,接着就返回前台绑定.
      

  5.   

    如果用UpdatePanel,可以在ItemTemplate中放
      

  6.   

    高歌方法要顶
    不过我更偏向于选择AJAX方式,使用HttpRequest把该列数据做为参数传递
    实现无刷新
      

  7.   

    ajax,或者更简单的办法 iframe都可以,不过ajax可以用一些现成的控件,JQUERY是个不错的选择
      

  8.   

    如果用UpdatePanel,可以在ItemTemplate中放高歌方法要顶 
    不过我更偏向于选择AJAX方式,使用HttpRequest把该列数据做为参数传递 
    实现无刷新ajax,或者更简单的办法 iframe都可以,不过ajax可以用一些现成的控件,JQUERY是个不错的选择有没有看过类似的网站如你们说的方法,就网址也可以
      

  9.   

    用ajax异步提交请求就可以了
    如果不要求严谨的局部刷新处理逻辑,可以在异步提交请求的同时直接用js修改html呈现代码
    如果要求严谨的局部刷新,提交请求后,在后台数据处理完毕回调客户端后才改变客户端呈现数据
      

  10.   

    以Northwind数据库的Products表为例,GridView显示ProductID, ProductName, UnitPrice三列。UnitPrice列放在ItemTemplate内的UpdatePanel内。
    当点击Button时,所有UnitPrice列的值*2. GridView1的EnableViewState设为false; UpdatePanel的UpdateMode设为Always(默认值).<form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <div>
        <asp:Button ID="Button1" runat="server" Text="点击时所有UnitPrice列值*2" onclick="Button1_Click" />
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" EnableViewState="false"
                DataKeyNames="ProductID" >
                <Columns>
                    <asp:BoundField DataField="ProductID" HeaderText="ProductID" 
                        InsertVisible="False" ReadOnly="True" SortExpression="ProductID" />
                    <asp:BoundField DataField="ProductName" HeaderText="ProductName" 
                        SortExpression="ProductName" />
                    <asp:TemplateField HeaderText="Unit Price">
                        <ItemTemplate>
                            <asp:UpdatePanel runat="server" UpdateMode="Always" ID="UpdatePanel1" RenderMode="Inline">
                                <ContentTemplate>
                                    <asp:Label ID="LabelUnitPrice" Text='<%# Eval("UnitPrice", "{0:c}") %>' runat="server" />
                                </ContentTemplate>
                                <Triggers>
                                    <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
                                </Triggers>
                            </asp:UpdatePanel>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
        </div>
    </form>protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                DataTable dt = new DataTable();
                using (SqlConnection conn = new SqlConnection("server=localhost;database=northwind;uid=sa;pwd="))
                {
                    SqlCommand cmd = new SqlCommand("select ProductID, ProductName, UnitPrice from Products", conn);
                    conn.Open();
                    dt.Load(cmd.ExecuteReader(CommandBehavior.CloseConnection));
                }
                GridView1.DataSource = dt;
                GridView1.DataBind();            ViewState["Products"] = dt; //为了不影响数据库,以后把ViewState["Products"]作为GridView1的数据源。
            }
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            DataTable dt = (DataTable)ViewState["Products"];
            foreach (DataRow row in dt.Rows)
            {
                row["UnitPrice"] = Convert.ToDecimal(row["UnitPrice"]) * 2;
            }
            GridView1.DataSource = dt;
            GridView1.DataBind();        ViewState["Products"] = dt;
        }