【问题标题】:Update Link Button Not Firing更新链接按钮未触发
【发布时间】:2019-10-23 12:00:05
【问题描述】:

我正在构建一个 Web 应用程序。我遇到了更新链接按钮未触发的问题。我已经测试了与我的数据库的连接,并且插入语句(尽管下面没有显示链接按钮)在我创建的每个表单上都能正常工作。我和我的同事无法弄清楚为什么更新链接按钮没有更新数据库。

<asp:Content runat="server" ID="Program" ContentPlaceHolderId="MainContent">
    <asp:UpdatePanel ID="ProgramUpdatePanel" runat="server">
        <ContentTemplate>

        <asp:GridView ID="gridView1" runat="server" AllowSorting="true" AutoGenerateColumns="False" DataKeyNames="PRIMARY_KEY_ID" DataSourceID="SqlDataSource2" OnRowCancelingEdit="gridView1_RowCancelingEdit" OnRowEditing="gridView1_RowEditing" OnRowUpdating="gridView1_RowUpdating" OnRowUpdated="gridView1_RowUpdated">
            <Columns>
                <asp:TemplateField ShowHeader="False">
                    <EditItemTemplate>
                        <asp:LinkButton ID="lbUpdate" runat="server" CausesValidation="True" CommandName="Update" Text="Update"></asp:LinkButton>
                        <asp:LinkButton ID="lbCancel" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel"></asp:LinkButton>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:LinkButton ID="lbEdit" runat="server" CausesValidation="False" CommandName="Edit" Text="Edit"></asp:LinkButton>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="PRIMARY_KEY_ID" HeaderText="PRIMARY_KEY_ID" InsertVisible="False" ReadOnly="True" SortExpression="PRIMARY_KEY_ID" />
                <asp:TemplateField HeaderText="PROGRAM" SortExpression="PROGRAM">
                    <EditItemTemplate>
                        <asp:TextBox ID="txtProgram" runat="server" Text='<%# Bind("PROGRAM") %>'></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="lblProgram" runat="server" Text='<%# Bind("PROGRAM") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                 <asp:TemplateField HeaderText="DESC" SortExpression="DESC">
                    <EditItemTemplate>
                        <asp:TextBox ID="txtDesc" runat="server" Text='<%# Bind("DESC") %>'></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="lblDesc" runat="server" Text='<%# Bind("DESC") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="RANK" SortExpression="RANK">
                    <EditItemTemplate>
                        <asp:TextBox ID="txtRank" runat="server" Text='<%# Bind("RANK") %>'></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="lblRank" runat="server" Text='<%# Bind("RANK") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="ACTIVITY" SortExpression="ACTIVITY">
                    <EditItemTemplate>
                        <asp:CheckBox ID="cbActivityEdit" runat="server" Checked='<%# Bind("ACTIVITY") %>' />
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:CheckBox ID="cbActivity" runat="server" Checked='<%# Bind("ACTIVITY") %>' Enabled="false" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="DATE_ORIGIN" SortExpression="DATE_ORIGIN">
                    <EditItemTemplate>
                        <asp:TextBox ID="txtDateOrigin" runat="server" Text='<%# Bind("DATE_ORIGIN") %>'></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="lblDateOrigin" runat="server" Text='<%# Bind("DATE_ORIGIN") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="DATE_MODIFIED" SortExpression="DATE_MODIFIED">
                    <EditItemTemplate>
                        <asp:Label ID="lblDateModifiedEdit" runat="server" Text='<%# Bind("DATE_MODIFIED") %>'></asp:Label>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="lblDateModified" runat="server" Text='<%# Bind("DATE_MODIFIED") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="ORIGIN_BY" SortExpression="ORIGIN_BY">
                    <EditItemTemplate>
                        <asp:TextBox ID="txtOriginBy" runat="server" Text='<%# Bind("ORIGIN_BY") %>'></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="lblOriginBy" runat="server" Text='<%# Bind("ORIGIN_BY") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="MODIFIED_BY" SortExpression="MODIFIED_BY">
                    <EditItemTemplate>
                        <asp:Label ID="lblModifiedByEdit" runat="server" Text='<%# Session["CurrentUserName"] %>'></asp:Label>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="lblModifiedBy" runat="server" Text='<%# Bind("MODIFIED_BY") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="HISTORY" SortExpression="HISTORY">
                    <EditItemTemplate>
                        <asp:TextBox ID="txtHistory" runat="server" Text='<%# Bind("HISTORY") %>'></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="lblHistory" runat="server" Text='<%# Bind("HISTORY") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>

            </Columns>
        </asp:GridView>
    <div>
    </div>
        <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
            ConnectionString="<%$ ConnectionStrings:DB_CONNECTION %>" 
            SelectCommand="SELECT * FROM [tblPRIMARY]"
            InsertCommand="INSERT INTO [tblPRIMARY]
            ([PROGRAM],[DESC], [RANK], [ACTIVITY], [DATE_ORIGIN], [DATE_MODIFIED], [ORIGIN_BY], [MODIFIED_BY], [HISTORY])
            VALUES
            (@PROGRAM, @DESC, @RANK, @ACTIVITY, @DATE_ORIGIN, @DATE_MODIFIED, @ORIGIN_BY, @MODIFIED_BY, @HISTORY)"
            UpdateCommand="UPDATE [tblPRIMARY]
            SET [PROGRAM] = @PROGRAM,
            [DESC] = @DESC,
            [RANK] = @RANK,
            [ACTIVITY] = @ACTIVITY,
            [DATE_ORIGIN] =@DATE_ORIGIN,
            [DATE_MODIFIED] = @DATE_MODIFIED,
            [ORIGIN_BY] = @ORIGIN_BY,
            [MODIFIED_BY] = @MODIFIED_BY,
            [HISTORY] = @HISTORY
            WHERE [PRIMARY_KEY_ID] = @PRIMARY_KEY_ID"
            >
            <InsertParameters>
                <asp:Parameter Name="PRIMARY_KEY_ID" />
                <asp:Parameter Name="PROGRAM" Type="String" />
                <asp:Parameter Name="DESC" Type="String" />
                <asp:Parameter Name="RANK" Type="String" />
                <asp:Parameter Name="ACTIVITY" Type="Boolean" />
                <asp:Parameter Name="DATE_ORIGIN" Type="DateTime" />
                <asp:Parameter Name="DATE_MODIFIED" Type="DateTime" />
                <asp:Parameter Name="ORIGIN_BY" Type="String" />
                <asp:Parameter Name="MODIFIED_BY" Type="String" />
                <asp:Parameter Name="HISTORY" Type="String" />
            </InsertParameters>

            <UpdateParameters>
                <asp:Parameter Name="PRIMARY_KEY_ID" />
                <asp:Parameter Name="PROGRAM" Type="String" />
                <asp:Parameter Name="DESC" Type="String" />
                <asp:Parameter Name="RANK" Type="String" />
                <asp:Parameter Name="ACTIVITY" Type="Boolean" />
                <asp:Parameter Name="DATE_ORIGIN" Type="DateTime" />
                <asp:Parameter Name="DATE_MODIFIED" Type="DateTime" />
                <asp:Parameter Name="ORIGIN_BY" Type="String" />
                <asp:Parameter Name="MODIFIED_BY" Type="String" />
                <asp:Parameter Name="HISTORY" Type="String" />
            </UpdateParameters>
             </asp:SqlDataSource>

            </ContentTemplate>
        </asp:UpdatePanel>
    </asp:Content>

非常感谢任何帮助!谢谢。

【问题讨论】:

  • UpdatePanel之前应该有一个ScriptManager控件。
  • @MuhammadAftab 我的站点母版页上有 ScriptManager 控件。

标签: c# asp.net sql-update


【解决方案1】:

您似乎在页面中使用了验证控件。您的页面必须在回发到服务器之前通过验证。下面是 CausesValidation 属性的功能:

  • CausesValidation 属性指定在 按钮控件被点击。

  • 默认情况下,单击按钮时会执行页面验证。

  • 此属性主要用于在单击取消或重置按钮时阻止验证。

尝试在您的Update 按钮中设置CausesValidation="False"

【讨论】:

  • 不幸的是,这不起作用。在我后面的代码中,我还有一个标签,它在我的 gridView1_RowUpdating 事件中输出“更新完成”,并显示在网页底部。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多