如何在不使用更新面板重新加载的情况下更新页面?AP.NET C#

时间:2016-05-09 14:29:58

标签: c# asp.net gridview

我有一个包含编辑和删除命令的gridview。

我希望当我点击编辑时,更新该值,然后点击删除该值将从数据库中删除,并且页面不会重新加载。

现在,我使用更新面板和脚本管理器,但页面再次重新加载,“更新”面板无效。我的另一个问题是当我在gridview之前放置array = append(...)表单标签然后它工作正常,gridview显示,但是当我删除此标记时出现错误:

  

对象引用未设置实例对象。

我的aspx代码是:

<form runat="server"></form>

我的aspx.cs代码是:

<asp:Content ID="Content2" ContentPlaceHolderID="body" Runat="Server">
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate>
<form runat="server"></form>
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    DataKeyNames="Database_id" Height="184px" 
    onrowcancelingedit="GridView1_RowCancelingEdit" 
    onrowdeleting="GridView1_RowDeleting" onrowediting="GridView1_RowEditing" 
    onrowupdating="GridView1_RowUpdating" style="margin-left: 181px" Width="361px" 
        BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" 
        CellPadding="3" onselectedindexchanged="GridView1_SelectedIndexChanged">
    <Columns>
        <asp:TemplateField HeaderText="Database Name">
            <EditItemTemplate>
                <asp:TextBox ID="txtDatabaseName" runat="server" Height="22px" 
                    Text='<%# Eval("Database_Name") %>' Width="192px"></asp:TextBox>
            </EditItemTemplate>
            <ItemTemplate>
                <asp:Label ID="Label1" runat="server" Text='<%# Eval("Database_Name") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Description">
            <EditItemTemplate>
                <asp:TextBox ID="txtdescription" runat="server" Height="24px" 
                    Text='<%# Eval("Description") %>' Width="209px"></asp:TextBox>
            </EditItemTemplate>
            <ItemTemplate>
                <asp:Label ID="Label2" runat="server" Text='<%# Eval("Description") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Date">
            <ItemTemplate>
                <asp:Label ID="Label3" runat="server" Text='<%# Eval("Date") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:CommandField HeaderText="Operations" ShowDeleteButton="True" 
            ShowEditButton="True" />
    </Columns>
        <FooterStyle BackColor="White" ForeColor="#000066" />
        <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
        <RowStyle ForeColor="#000066" />
        <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
        <SortedAscendingCellStyle BackColor="#F1F1F1" />
        <SortedAscendingHeaderStyle BackColor="#007DBB" />
        <SortedDescendingCellStyle BackColor="#CAC9C9" />
        <SortedDescendingHeaderStyle BackColor="#00547E" />
</asp:GridView>
</ContentTemplate></asp:UpdatePanel>
</asp:Content>

2 个答案:

答案 0 :(得分:3)

您的代码格式不正确,UpdatePanel位于form之外,gridview也位于form之外。它一定是那样......

<form runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:GridView>
...

 </asp:GridView>
 </ContentTemplate>
 </asp:UpdatePanel>
</form>

答案 1 :(得分:0)

首先要做的事情:

<%-- Your code (fragment) --%>
  <EditItemTemplate>
     <asp:TextBox ID="txtDatabaseName" runat="server" Height="22px" 
         Text='<%# Eval("Database_Name") %>' Width="192px"></asp:TextBox>
  </EditItemTemplate>

Eval是ReadOnly(OneWay)绑定。它应该是

     <asp:TextBox ID="txtDatabaseName" runat="server" Height="22px" 
         Text='<%# Bind("Database_Name") %>' Width="192px"></asp:TextBox>

下一步。我建议你使用<asp:SqlDataSource...将所有肮脏的工作带到自身(selectupdatedelete)。您可以将UserID参数发送到以下参数:

<asp:Literal ID="userId" runat="server" Visible="false"></asp:Literal>
...
<asp:SqlDataSource ID="sqlDS"...
    <SelectParameters>
       <asp:ControlParameter ControlID="userId" PropertyName="Text" Name="ID" Type="Int32" />
    </SelectParameters>
</asp:SqlDataSource>
...

在GridView中添加DataSourseID="sqlDS"
Page_load设置值userId.Text = ID.ToString();

试试这种方式。