无法为Panel内的文本框指定值

时间:2011-08-21 10:25:41

标签: asp.net linq-to-sql gridview c#-4.0 updatepanel

如标题中所述,我在向面板内的文本框分配值时遇到问题。问题是来自gvAsseti的按钮不显示pnlAsset(其中包含文本框),并且不会将值加载到文本框中。

奇怪的是代码执行正常并且在使用调试器时我能够看到正确的值被发送到文本框,但由于某种原因它们没有显示(我得到的只是空文本框)。

这是代码前端(抱歉长度,你可以跳过中间部分,它只有文本框):

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<uc:Firma ID="ucFirma" runat="server"></uc:Firma>
<asp:GridView ID="gvKontakti" runat="server" OnRowCommand="gvKontakti_RowCommand"
    DataKeyNames="idKontakt">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:Button ID="btnShowAssets" runat="server" CommandArgument='<%# Eval("idKontakt") %>'
                    CommandName="ShowAssets" Text="Prikaži assete" />
                <asp:Button ID="btnAddAsset" runat="server" CommandArgument='<%# Eval("idKontakt") %>'
                    CommandName="AddAsset" Text="Dodaj asset" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField DataField="idKontakt" HeaderText="ID" Visible="false" />
        <asp:BoundField DataField="Naziv" HeaderText="Naziv" />
    </Columns>
</asp:GridView>
<asp:Panel ID="pnlAsset" runat="server">
    <table>
        <tr>
            <td>
                Naziv:
            </td>
            <td colspan="3">
                <asp:TextBox ID="txtNaziv" runat="server" Width="430px"></asp:TextBox>
            </td>
        </tr>
        <tr>
            <td>
                Kod 1:
            </td>
            <td>
                <asp:TextBox ID="txtKod1" runat="server"></asp:TextBox>
            </td>
            <td>
                Kod 2:
            </td>
            <td>
                <asp:TextBox ID="txtKod2" runat="server"></asp:TextBox>
            </td>
        </tr>
        <tr>
            <td>
                Datum isteka garancije:
            </td>
            <td>
                <asp:TextBox ID="txtGarancija" runat="server"></asp:TextBox>
            </td>
        </tr>
        <tr>
            <td>
                Lokacija:
            </td>
            <td colspan="3">
                <asp:TextBox ID="txtLokacija" runat="server" TextMode="MultiLine" Width="455px" Height="200px"></asp:TextBox>
            </td>
        </tr>
        <tr>
            <td>
                Opis:
            </td>
            <td colspan="3">
                <asp:TextBox ID="txtOpis" runat="server" TextMode="MultiLine" Width="455px" Height="200px"></asp:TextBox>
            </td>
        </tr>
        <tr>
            <td>
                Aktivna imovina:
            </td>
            <td>
                <asp:CheckBox ID="chkAktivna" runat="server" />
            </td>
        </tr>
        <tr>
            <td>
                <asp:Button ID="btnSave" runat="server" Text="Spremi" OnClick="btnSave_Click" />
            </td>
        </tr>
    </table>
</asp:Panel>
<asp:UpdatePanel ID="upAsseti" runat="server">
    <ContentTemplate>
        <asp:GridView ID="gvAsseti" runat="server" onrowcommand="gvAsseti_RowCommand">
            <Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:Button ID="btnShowAsset" runat="server" CommandArgument='<%# Eval("idAsset") %>'
                            CommandName="ShowAsset" Text="Prikaži asset" />
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
    </ContentTemplate>
</asp:UpdatePanel>

还有代码隐藏:

        protected void gvAsseti_RowCommand(object sender, GridViewCommandEventArgs e)
    {

        int idFirma = Convert.ToInt32(Request.QueryString["idt"]);
        int idAsset = Convert.ToInt32(e.CommandArgument);

        TicketingSystemEntities db = new TicketingSystemEntities();

        if (e.CommandName=="ShowAsset")
        {
            var asset = (from a in db.Assets
                         where a.idAsset == idAsset
                         select a).SingleOrDefault();

            pnlAsset.Visible = true;

            txtGarancija.Text = asset.DatumGarancije.ToString();
            txtKod1.Text = asset.Kod1;
            txtKod2.Text = asset.Kod2;
            txtLokacija.Text = asset.Lokacija;
            txtNaziv.Text = asset.Naziv;
            txtOpis.Text = asset.Opis;

            if (asset.Aktivan == true)
            {
                chkAktivna.Checked = true;
            }
            else
            {
                chkAktivna.Checked = false;
            }
        }
    }
}

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

将面板放在updatepanel内容模板中。由于gvAsseti位于更新面板内,因此它将在回发时刷新updatepanel的内容。