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

PostBack ごとに使用DataBind()することで、ユーザーがアクションを実行するたびに 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 に答える