我在一个页中,gridview和detailsview各分别绑定一个数据源,但在数据库中指向同一个表,当gridview中选中某项之后,用Response.Redirect跳到同一个页面,同时用?向detailsview传值,想在detailsview中更新数据库后,gridview中同步显示更新,但是用Response.AddHeader("Refresh", "0");或者 Response.Redirect("该页面.aspx");都只是页面更新,但gridview并不更新,有没有什么解决方法?麻烦说的详细些。代码如下:
<%@ 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>
    </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>
    
        
    <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>
           </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>

解决方案 »

  1.   

    看着头晕啊。
    想刷新gridview 最简单的方法就是再绑定一次。
    把绑定单拿出来写个绑定方法。调用绑定方法。
      

  2.   

    asp。net的话用reapter比gridview好控制。
      

  3.   

    绑定gridview的数据有没有判断回发
    if(!IsPostBack){
      绑定数据
    }
    或者放到
    protected void Page_PreRender(object sender,Eventages e){
     这里绑定也一样就不用判断回发了
    }
      

  4.   

    没有错啊,只是同一个页面中既有gridview又有detailsview,指向同一个表,想通过detailsview改变数据库时,让gridview同步更新
      

  5.   

    是想在网页下,让gridview与数据库同步更新,不是后台写啊,怎么重绑定…………