如题,如何使gridview随数据库变化自动刷新啊?
或者在同一个页面中的其他地方对gridview中某一值更新了,gridview可不可以自动跟随刷新?
麻烦不要只说类似重新绑定gridview什么的,具体实现方法说详细点~~

解决方案 »

  1.   

    代码如下:<%@ Page Language="C#" MasterPageFile="~/Administrator/AdmiMasterPage.master" AutoEventWireup="true" CodeFile="Tip.aspx.cs" Inherits="Administrator_Tip" Title="Untitled Page" %><asp:Content ID="Content1" ContentPlaceHolderID="MailContentPlaceHolder" Runat="Server">
    <div>
        <asp:Button ID="Button1" runat="server" Text="添    加" OnClick="Button1_Click" style="position :absolute; left: 72px; top: 482px;" Width="82px"/>
    </div>
    </asp:Content>
    <asp:Content ID="TipContent" ContentPlaceHolderID="ContentPart" Runat="Server">
    <div>
        &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;
        
        
        <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True" style="position :absolute; left: 57px; top: 521px;"
            AutoGenerateColumns="False" DataKeyNames="id" DataSourceID="SqlDataSource1" 
            Width="472px" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" CellPadding="4" ForeColor="#333333" GridLines="None" >
            <Columns>
            <asp:HyperLinkField  HeaderText="操作" DataNavigateUrlFields= "id"   DataNavigateUrlFormatString= "tip.aspx?id={0} "   Text="查看详情"   >
                <ItemStyle HorizontalAlign="Center" />
            </asp:HyperLinkField>  
                <asp:BoundField DataField="title" HeaderText="title" SortExpression="title" >
                    <ItemStyle HorizontalAlign="Center" />
                </asp:BoundField>
                <asp:BoundField DataField="details" HeaderText="details" SortExpression="details"
                    Visible="False" >
                    <ItemStyle Height="30px" />
                </asp:BoundField>
                <asp:BoundField DataField="time" HeaderText="time" SortExpression="time" >
                    <ItemStyle HorizontalAlign="Center" />
                </asp:BoundField>
                <asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" ReadOnly="True"
                    SortExpression="id" Visible="False" />
            </Columns>
            <RowStyle BackColor="#EFF3FB" />
            <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
            <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
            <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
            <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
            <EditRowStyle BackColor="#2461BF" />
            <AlternatingRowStyle BackColor="White" />
        </asp:GridView>
        
        
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConflictDetection="CompareAllValues"
            ConnectionString="<%$ ConnectionStrings:mydbConnectionString %>"
             DeleteCommand="DELETE FROM [tip] WHERE [id] = @id "
            InsertCommand="INSERT INTO [tip] ([title], [details], [time]) VALUES (@title, @details, @time)"
            OldValuesParameterFormatString="original_{0}"
             SelectCommand="SELECT * FROM [tip] ORDER BY [id] DESC"
            UpdateCommand="UPDATE [tip] SET [title] = @title, [details] = @details, [time] = @time WHERE [id] = @id ">
            <DeleteParameters>
                <asp:Parameter Name="original_id" Type="Int32" />
                <asp:Parameter Name="original_title" Type="String" />
                <asp:Parameter Name="original_details" Type="String" />
                <asp:Parameter DbType="Datetime" Name="original_time" />
            </DeleteParameters>
            <UpdateParameters>
                <asp:Parameter Name="title" Type="String" />
                <asp:Parameter Name="details" Type="String" />
                <asp:Parameter DbType="Datetime" Name="time" />
                <asp:Parameter Name="original_id" Type="Int32" />
                <asp:Parameter Name="original_title" Type="String" />
                <asp:Parameter Name="original_details" Type="String" />
                <asp:Parameter DbType="Datetime" Name="original_time" />
            </UpdateParameters>
            <InsertParameters>
                <asp:Parameter Name="title" Type="String" />
                <asp:Parameter Name="details" Type="String" />
                <asp:Parameter DbType="Datetime" Name="time" />
            </InsertParameters>
        </asp:SqlDataSource>
        &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
        &nbsp; &nbsp; &nbsp;&nbsp;
        
        
        
        <asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False"  style="position:absolute; left: 552px; top: 520px;"
            DataKeyNames="id" DataSourceID="SqlDataSource2" Height="353px" Width="378px"  HeaderText="详情"   OnPageIndexChanging="DetailsView1_PageIndexChanging" CellPadding="4" ForeColor="#333333" GridLines="None"
              >
            <Fields>
            
                <asp:BoundField DataField="title" HeaderText="title" SortExpression="title" />
                <asp:BoundField DataField="time" ReadOnly="True" HeaderText="time" SortExpression="time" />
                <asp:BoundField DataField="details" HeaderText="details" SortExpression="details" >
                    <ItemStyle Height="170px" HorizontalAlign="Left" VerticalAlign="Top" Width="300px" />
                </asp:BoundField>
                <asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" ReadOnly="True"
                    SortExpression="id" Visible="False" />
                <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
                
            </Fields>
            <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
            <CommandRowStyle BackColor="#D1DDF1" Font-Bold="True" />
            <RowStyle BackColor="#EFF3FB" />
            <FieldHeaderStyle BackColor="#DEE8F5" Font-Bold="True" />
            <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
            <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
            <EditRowStyle BackColor="#2461BF" />
            <AlternatingRowStyle BackColor="White" />
        </asp:DetailsView>
        <asp:SqlDataSource ID="SqlDataSource2" runat="server"
            ConnectionString="<%$ ConnectionStrings:mydbConnectionString2 %>" DeleteCommand="DELETE FROM [tip] WHERE [id] = @original_id"
            InsertCommand="INSERT INTO [tip] ([title], [details], [time]) VALUES (@title, @details, @time)"
            OldValuesParameterFormatString="original_{0}" SelectCommand="SELECT * FROM [tip] WHERE ([id] = @id2)"
            UpdateCommand="UPDATE [tip] SET [title] = @title, [details] = @details, [time] = @time WHERE [id] = @original_id">
            <DeleteParameters>
                <asp:Parameter Name="original_id" Type="Int32" />
            </DeleteParameters>
            <UpdateParameters>
                <asp:Parameter Name="title" Type="String" />
                <asp:Parameter Name="details" Type="String" />
                <asp:Parameter DbType="Datetime" Name="time" />
                <asp:Parameter Name="original_id" Type="Int32" />
            </UpdateParameters>
            <InsertParameters>
                <asp:Parameter Name="title" Type="String" />
                <asp:Parameter Name="details" Type="String" />
                <asp:Parameter DbType="Datetime" Name="time" />
            </InsertParameters>
            <SelectParameters>
                <asp:QueryStringParameter DefaultValue="13" Name="id2" QueryStringField="id" Type="Int32" />
            </SelectParameters>
        </asp:SqlDataSource>
        &nbsp;
        
        
    </div>
    </asp:Content>
      

  2.   

    可以用数据库缓存依赖,用setinterval及ajax监听该缓存,当你基于的那个表数据改变时缓存失效,失效看你要刷新页面还是直接重新读取数据,返回json到客户端赋值。
      

  3.   

    这要求太高了,又不是winform,你还要这么搞,只能定义刷新。PS:刚发布的网站SEO优化工具:点格网站日志分析器[IISLogViewer]
      

  4.   

    网页跟服务器不是实时通讯的,服务器无法推送消息给网页。你只能定时去服务器端取得状态。例如可以在数据库中保存tip表格最后一次更新的时间,然后使用ajax方式每隔5秒钟去查询一次这个时间,如果与页面javascript程序中原来的值对比发生了改变,则触发页面刷新。