【问题标题】:Web Form do not update dataWeb 表单不更新数据
【发布时间】:2014-04-29 18:52:12
【问题描述】:

我的网络应用程序有两个使用母版页的网络表单,它们访问 SqlServer 数据库中的数据表:

1 - Autoridade.aspx 显示数据并搜索它们

2- Autoridade_Atualizar.aspx 更新表 lideranca 中的数据

Autoridade.aspx 有一个显示数据的 GridView,并使用 asp:HyperLinkField 重定向到 Autoridade_Atualizar.aspx:

<asp:GridView ID="gwDados" runat="server" AutoGenerateColumns="False" EmptyDataText="Não Existem Autoridades Cadastradas...">
        <Columns>
            <asp:BoundField DataField="id" HeaderText="ID" />
            <asp:BoundField DataField="nome" HeaderText="Nome" />
            <asp:BoundField DataField="partido" HeaderText="Partido" />
            <asp:BoundField DataField="aliado" HeaderText="Aliado" />
            <asp:BoundField DataField="cargo" HeaderText="Cargo" />
            <asp:BoundField DataField="lotacao" HeaderText="Lotação" />
            <asp:BoundField DataField="atuacao" HeaderText="Atuação" />
            <asp:HyperLinkField DataNavigateUrlFormatString="Autoridade_Atualizar.aspx?id={0}" Text="Editar" DataNavigateUrlFields="id" />
        </Columns>
    </asp:GridView>

当我交换 DropDownLists 字段的值并单击表单的更新按钮时,不要更改 gridview 上的数据。

asp:Panel runat="server" ID="pnlUpdate" Visible="true">
    <h1>Atualizar Autoridade</h1>
    <ul>
        <li>
            <asp:Label ID="CodAutoridade" runat="server" Text="Cód. Autoridade"></asp:Label>
            <asp:TextBox ID="tbCodAutoridade" Text="2013" Enabled="false" CssClass="radiusInput disable" runat="server" Width="546px"></asp:TextBox>
        </li>
        <li>
            <asp:Label Text="Nome" ID="label1" runat="server" Width="88px"></asp:Label>
            <asp:TextBox ID="tbNome" Text="" CssClass="radiusInput" runat="server" Width="654px" Height="16px"></asp:TextBox>
        </li>
        <li>
            <asp:Label ID="Cargo" runat="server" Text="Cargo"></asp:Label>
            <asp:DropDownList ID="ddlcargo" DataTextField="carg_cargo" DataValueField="carg_cd_cargo" CssClass="radiusInput" runat="server" Width="454px"></asp:DropDownList>
        </li>
        <li>
            <asp:Label ID="Partido" runat="server" Text="Partido"></asp:Label>
            <asp:DropDownList ID="ddlpartido" DataTextField="part_sigla" DataValueField="part_cd_partido" CssClass="radiusInput" runat="server" Width="254px"></asp:DropDownList>
        </li>
        <li>

下面是我的 C# 代码:

protected void bntAtualizar_Click(object sender, EventArgs e)
    {
        this.OnUpdate();
    }

    private void OnUpdate()
    {

        mdc = new ModelDataContext();
        try
        {
            lid_lideranca lideranca = mdc.lid_liderancas.First(aut => aut.lid_cd_lideranca == int.Parse(tbCodAutoridade.Text.Trim()));


            tbNome.Text = lideranca.lid_nome;
            ddlcargo.SelectedIndex = ddlcargo.Items.IndexOf(ddlcargo.Items.FindByText(lideranca.lid_cd_partido.ToString()));
            ddlpartido.SelectedIndex = ddlpartido.Items.IndexOf(ddlpartido.Items.FindByText(lideranca.lid_cd_partido.ToString()));
            tbDescricao.Text = lideranca.lid_cargo2;
            tbemail.Text = lideranca.lid_email;
            tbfacebook.Text = lideranca.lid_facebook;
            tbtwitter.Text = lideranca.lid_twitter;
            tbendercomercial.Text = lideranca.lid_endereco_comercial;
            tbenderesidencial.Text = lideranca.lid_endereco_residencial;
            tbfonecelular.Text = lideranca.lid_fone_celular;
            tbfoneresidencial.Text = lideranca.lid_fone_residencial;
            tbfonecomercial.Text = lideranca.lid_fone_comercial;
            ddlmunicipio.SelectedIndex = ddlmunicipio.Items.IndexOf(ddlmunicipio.Items.FindByText(lideranca.lid_cd_cidade_atuacao.ToString()));
            ddlbasealiada.SelectedIndex = ddlbasealiada.Items.IndexOf(ddlbasealiada.Items.FindByText(lideranca.lid_cd_base_aliada.ToString()));
            ddlorgao.SelectedIndex = ddlorgao.Items.IndexOf(ddlorgao.Items.FindByText(lideranca.lid_cd_orgao.ToString()));

            mdc.SubmitChanges();
            Response.Redirect("Autoridade.aspx");
        }
        catch (Exception)
        {

        }
        finally
        {
            mdc.Dispose();
        }

    }

【问题讨论】:

    标签: c# asp.net gridview drop-down-menu webforms


    【解决方案1】:

    据我所知,您不会更改底层数据库中 lideranca 记录的值,而是使用这些值来设置控件的文本和选定索引值。您正在调用数据上下文的 SubmitChanges 但没有修改记录。如果您的 gridview 绑定到 lid_liderancas 表,这些记录将始终相同,因为它们没有被修改。

    【讨论】:

    • 所以。我怎么做这个?你能告诉我一个示例代码吗?
    猜你喜欢
    • 1970-01-01
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-07
    相关资源
    最近更新 更多