0

目前我有一个网格视图,当我单击选择时,它会在列表视图中填充值。我使用 selectedindexchanged 事件在代码后面处理这个问题。我什至在 insertitem 模板中为新条目填充了一个文本框。

protected void GridView9_SelectedIndexChanged(object sender, EventArgs e)
{
// this handles the transmittal costs
SqlDataSource29.SelectParameters.Clear();
SqlDataSource29.SelectParameters.Add("tc_t_id", App_id);        
SqlDataSource29.InsertParameters.Clear();
ListView1.Visible = true;
ListView1.DataBind();
((TextBox)ListView1.InsertItem.FindControl("tc_t_idTextBox")).Text = App_id;

但是,当我进行插入时会出现问题。我失去了放入 listviews insertitem texbox tc_t_idTextBox 的价值。实际上,当我编辑和删除时,我也会失去价值。

必须有一种方法可以在插入之间保持该值。

<InsertItemTemplate>
    <tr style="">
        <td>
            <asp:Button ID="InsertButton" runat="server" CommandName="Insert" 
                Text="Insert" />
            <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" 
                Text="Clear" />
        </td>
        <td>
            <asp:TextBox ID="tc_dateTextBox" runat="server" Text='<%# Bind("tc_date") %>' />
        </td>
        <td>
            <asp:TextBox ID="tc_costTextBox" runat="server" Text='<%# Bind("tc_cost") %>' />
        </td>
        <td>
            <asp:TextBox ID="tc_typeTextBox" runat="server" Text='<%# Bind("tc_type") %>' />
        </td>
        <td>
            <asp:TextBox ID="tc_commentTextBox" runat="server" Text='<%# Bind("tc_comment") %>' />
        </td>
        <td>
            &nbsp;</td>
        <td>
            <asp:TextBox ID="tc_t_idTextBox" runat="server" 
                Text='<%# Bind("tc_t_id") %>' Enabled="false" Width="15"  />
        </td>
    </tr>
</InsertItemTemplate>
4

1 回答 1

0

通过DataBind()在每个 PostBack 上使用,每次用户执行和操作时都会重新加载 ListView。在Page_Load您的页面中,改为执行以下操作:

SqlDataSource29.SelectParameters.Clear();
SqlDataSource29.SelectParameters.Add("tc_t_id", App_id);        
SqlDataSource29.InsertParameters.Clear();
ListView1.Visible = true;
if(!IsPostBack)
{
    ListView1.DataBind();
}
((TextBox)ListView1.InsertItem.FindControl("tc_t_idTextBox")).Text = App_id;
于 2012-08-23T20:21:34.640 回答