【问题标题】:Where should I put my UpdatePanel我应该把我的更新面板放在哪里
【发布时间】:2017-09-05 14:22:47
【问题描述】:

我的任务是将 ASP Web 应用程序更新到 Visual Studio 2015。我的母版页如下所示:

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="HorizontalMenu.master.cs" Inherits="HomiLog2015.HorizontalMenu" %>
<%@ Register Src="~/Header and Footer/Footer.ascx" TagPrefix="uc1" TagName="Footer" %>
<%@ Register Src="~/Header and Footer/Header.ascx" TagPrefix="uc1" TagName="Header" %>
<%@ Register Src="~/Menu.ascx" TagPrefix="uc1" TagName="Menu" %>
<link href="App_Themes/Rockies/BaseStyles.css" rel="stylesheet" />

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>

<body id="Body1" runat="server">
<form runat="server" id="form1" method="post">
    <asp:ScriptManager ID="scriptManager1" runat="server" EnablePartialRendering="True" EnablePageMethods="True" EnableScriptGlobalization="True" EnableScriptLocalization="True">
        </asp:ScriptManager>
    <table border="0">
        <tr>
            <td class="pcT" colspan="2">
                <uc1:Header runat="server" ID="Header1" />
            </td>
            <td class="pcTR"></td>
        </tr>
        <tr>
            <td class="pcml"></td>
            <td class="MLMmc">
                <uc1:Menu runat="server" id="Menu1" />
            </td>
        </tr>
        <tr>
            <td class="pcL"></td>
            <td class="pcC">
                <asp:ContentPlaceHolder id="PageContent" runat="server"/>
            </td>
            <td class="pcR"></td>
        </tr>
        <tr>
            <td class="pcBL"></td>
            <td class="pcB">
                <uc1:Footer runat="server" ID="Footer1" />
            </td>
            <td class="pcBR"></td>
        </tr>
    </table>
</form>
</body>
</html>

我有一个带有 GridView 的 ASP 网页,需要编辑、删除和插入记录。我已经运行了编辑和删除功能,但插入部分有问题。

当我尝试保存新记录时,所有数据字段都是空的。我知道 C# 代码正在读取行上的文本值,因为我在获取其值的行上有一个下拉列表和一个复选框,但它是默认值,而不是我为插入选择的值。

很确定这是一个回发问题,因为我注意到我的网页上没有 UpdatePanel。我试图将 gridview 包装在 UpdatePanel 中,但是当我这样做时,我收到错误消息,指出 GridView 不是已知元素。我尝试将 gridview 包装在 Div 中,然后将 div 包装在更新面板中。但后来我得到错误 div 不能嵌套在更新面板中。

所以我认为我需要在母版页上包含更新面板,但是当我将它移到那里时无法编译它。我尝试将面板放在母版页上的不同位置。有人可以指出我正确的方向吗?

我被要求提供更多代码,这里是具有 gridview 的 ASPX 页面

<%@ Page Title="" Language="C#" MasterPageFile="~/HorizontalMenu.Master" 
AutoEventWireup="true" CodeBehind="EditMembers.aspx.cs" 
Inherits="HomiLog2015.EditMembers" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" 
TagPrefix="telerik" %>

<asp:Content ID="Content2" ContentPlaceHolderID="PageContent" 
runat="server">
<section id="searchHeader" class="Search">
    <p class="searchp">Members</p>
</section>
<section id="SearchArea" class="SearchBar">
    Search for:
    <br />
    <br />
    Last Name:
</section>
<section id="searchFooter" class="Search">
    <p>*</p>
</section>
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
</telerik:RadAjaxManager>
<telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" 
Skin="Default"></telerik:RadAjaxLoadingPanel>
<telerik:RadFormDecorator ID="RadFormDecorator1" runat="server" />
<section id="grid" class="Grid-Container">
    <p style="text-align: Left;">
        <asp:Button ID="btnAdd" runat="Server" Text="Add New Record" 
OnClick="btnAdd_Click" /></p>

    <asp:GridView ID="MembersGridView" runat="server" EnableViewState="true"
        DataKeyNames="UserId"
        AutoGenerateColumns="false"
        AutoGenerateEditButton="true"
        AutoGenerateDeleteButton="false"
        OnRowDataBound="MembersGridView_RowDataBound"
        OnRowEditing="MembersGridView_RowEditing"
        OnRowCancelingEdit="MembersGridView_RowCancelingEdit"
        OnRowUpdating="MembersGridView_RowUpdating"
        OnRowUpdated="MembersGridView_RowUpdated"
        OnRowDeleting="MembersGridView_RowDeleting"
        OnRowCommand="MembersGridView_RowCommand"
        OnSorting="MembersGridView_Sorting"
        AllowPaging="true"
        AllowSorting="true"
        EmptyDataText="No Data Has Been Entered"
        HorizontalAlign="Left"
        ShowFooter="false"
        OnPageIndexChanging="MembersGridView_PageIndexChanging" 
BackColor="White" BorderColor="#999999" BorderStyle="Solid" 
BorderWidth="1px" CellPadding="3" ForeColor="Black" GridLines="Vertical">
        <Columns>
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:ImageButton runat="server" ID="MembersDeleteButton"
                        CommandArgument='<%#Eval("username")%>'
                        OnClientClick="return confirm('Are you sure you want 
to delete this event?');"
                        OnCommand="DeleteMember" Text="Delete"
                        ImageUrl="../Images/Icon_delete.gif">
</asp:ImageButton>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Valid" ItemStyle-Width="10">
                <ItemTemplate>
                    <asp:CheckBox ID="chkActive" runat="server" Checked='<%# 
Eval("valid")%>' Enabled="false"></asp:CheckBox>
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:CheckBox ID="chkActive" runat="server" Checked='<%# 
Eval("valid")%>'></asp:CheckBox>
                </EditItemTemplate>
                <FooterTemplate>
                    <asp:CheckBox ID="chkActive" runat="server" />
                </FooterTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="First Name" ItemStyle-
Width="100">
                <ItemTemplate>
                    <asp:Label ID="lblFirstName" runat="server" Text='<%# 
Eval("firstname")%>'></asp:Label>
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:TextBox ID="txtFirstName" runat="server" Text='<%# 
Eval("firstname")%>'></asp:TextBox>
                </EditItemTemplate>
                <FooterTemplate>
                    <asp:TextBox ID="txtFirstName" Text="Hello" 
runat="server"></asp:TextBox>
                </FooterTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Last Name" ItemStyle-Width="100">
                <ItemTemplate>
                    <asp:Label ID="lblLastName" runat="server" Text='<%# 
Eval("Lastname")%>'></asp:Label>
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:TextBox ID="txtLastName" runat="server" Text='<%# 
Eval("Lastname")%>'></asp:TextBox>
                </EditItemTemplate>
                <FooterTemplate>
                    <asp:TextBox ID="txtLastName" runat="server">
</asp:TextBox>
                </FooterTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="User Name" ItemStyle-Width="100">
                <ItemTemplate>
                    <asp:Label ID="lblUsertName" runat="server" Text='<%# 
Eval("username")%>'></asp:Label>
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:TextBox ID="txtUserName" runat="server" Text='<%# 
Eval("username")%>'></asp:TextBox>
                </EditItemTemplate>
                <FooterTemplate>
                    <asp:TextBox ID="txtUserName" runat="server">
</asp:TextBox>
                </FooterTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Role" ItemStyle-Width="100">
                <ItemTemplate>
                    <asp:Label ID="lblRole" runat="server" Text='<%# 
Eval("role")%>'></asp:Label>
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:DropDownList ID="ddlRole" runat="server" 
DataTextField="Role1" DataValueField="RoleID"></asp:DropDownList>
                </EditItemTemplate>
                <FooterTemplate>
                    <asp:DropDownList ID="ddlRole" runat="server" 
DataTextField="Role1" DataValueField="RoleID"></asp:DropDownList>
                </FooterTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Email" ItemStyle-Width="100">
                <ItemTemplate>
                    <asp:Label ID="lblEmail" runat="server" Text='<%# 
Eval("EmailAddress")%>'></asp:Label>
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:TextBox ID="txtemail" runat="server" Text='<%# 
Eval("EmailAddress")%>'></asp:TextBox>
                </EditItemTemplate>
                <FooterTemplate>
                    <asp:TextBox ID="txtEmail" runat="server"></asp:TextBox>
                    <asp:Button ID="btnInsert" runat="Server" Text="Insert" 
CommandName="Insert" UseSubmitBehavior="False" />
                </FooterTemplate>
            </asp:TemplateField>
        </Columns>
        <PagerSettings Mode="Numeric"
            Position="Bottom"
            PageButtonCount="10" />

        <AlternatingRowStyle BackColor="#CCCCCC" />
        <FooterStyle BackColor="#CCCCCC" />
        <HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" />

        <PagerStyle BackColor="#999999"
            Height="30px"
            VerticalAlign="Bottom"
            HorizontalAlign="center" ForeColor="Black" />

        <SelectedRowStyle BackColor="#000099" Font-Bold="True" 
ForeColor="White" />
        <SortedAscendingCellStyle BackColor="#F1F1F1" />
        <SortedAscendingHeaderStyle BackColor="#808080" />
        <SortedDescendingCellStyle BackColor="#CAC9C9" />
        <SortedDescendingHeaderStyle BackColor="#383838" />

        <EmptyDataTemplate>
            <asp:CheckBox ID="chkActive" runat="server" Checked='<%# 
Eval("valid")%>' Enabled="false"></asp:CheckBox>
            <asp:Label ID="lblFirstName" runat="server" Text='<%# 
Eval("firstname")%>'></asp:Label>
            <asp:Label ID="lblLastName" runat="server" Text='<%# 
Eval("Lastname")%>'></asp:Label>
            <asp:Label ID="lblUsertName" runat="server" Text='<%# 
Eval("username")%>'></asp:Label>
            <asp:DropDownList ID="ddlRole" runat="server" 
DataTextField="Role1" DataValueField="RoleID"></asp:DropDownList>
            <asp:Label ID="lblEmail" runat="server" Text='<%# 
Eval("EmailAddress")%>'></asp:Label>
        </EmptyDataTemplate>


    </asp:GridView>

</section>

</asp:Content>

我尝试将更新面板放在此页面的不同位置,但无法编译。

【问题讨论】:

  • “将应用更新到 Visual Studio 2015”是什么意思?这真的没有任何意义。 Visual Studio 是一个 IDE。

标签: c# html asp.net gridview


【解决方案1】:

母版页用于样式设置。在这种情况下,您不应该触摸它们。

将 MasterPageFile 属性添加到包含 GridView 的 .aspx 标记文件中的 Page 元素。

 <%@ Page MasterPageFile="~/YOUR_MASTER_PAGE_FILE" ... %>

记下您的母版页中 asp:ContentPlaceHolder 的 id。

<asp:ContentPlaceHolder id="PageContent" runat="server"/>

将新 .aspx 页面的内容包装在 asp:Content 元素中,该元素的 asp:ContentPlaceHolderID 属性等于 asp 的 ID:母版页文件中的 ContentPlaceHolder 元素。

<asp:Content ID="mainPlaceHolder" ContentPlaceHolderID="PageContent" runat="server">

Here is an example for inserting records using a GridView

请为您发布 GridView 和插入逻辑的相关标记和后端代码。根据提供的信息,我无法提供更多帮助。

【讨论】:

  • 谢谢@withmetta 我已经从 gridview 所在的 aspx 页面发布了 HTML。看起来内容区域已按照您的说明设置。
  • btnAdd 和 btnInsert 有什么区别?
  • 看来你也需要实现 OnRowCreated msdn.microsoft.com/en-us/library/…
  • btnAdd 更改页脚,通过将其属性 IsVisible 设置为 true 来显示 FooterTemplate。 Btn Insert 是调用存储过程在数据库中输入记录的代码。这两项工作都按计划进行,并且确实将记录输入到数据库中。只是不是我在字段中输入的数据
  • Follow this answer here. GridViews 不会自动处理插入。您将不得不编写自己的逻辑。
猜你喜欢
  • 2020-09-30
  • 2019-07-11
  • 1970-01-01
  • 2016-08-25
  • 2013-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-11
相关资源
最近更新 更多