0

私はデータ リスト アイテムの編集コンセプトに取り組んでいます。すべてのコードが正しいと思いますが、編集ボタンをクリックすると空白のページが表示されます。この問題を確認し、バグと救済の提案を送信してください。

HTML コード

    <asp:DataList ID="DataList1" runat="server" DataKeyField="outlet_id" OnEditCommand="DataList1_EditCommand" OnCancelCommand="DataList1_CancelCommand" RepeatColumns="2"> 
        <ItemTemplate>
        <asp:Label ID="Label1" runat="server" Text='<%#Eval("outlet_id") %>' ></asp:Label>
            <asp:Label ID="lbl" runat="server" Text='<%#Eval("company_name") %>' ></asp:Label>
            <asp:Button ID="edit" runat="server" Text="Edit" CommandName="edit"  />
            <asp:Button ID="delete" runat="server" Text="Del" CommandName="del" />
        </ItemTemplate>
        <EditItemTemplate>
        id<asp:TextBox ID="id" runat="server" Text='<%#Eval("outlet_id") %>'></asp:TextBox> 
        name<asp:TextBox ID="name" runat="server" Text='<%#Eval("company_name") %>'  ></asp:TextBox>
            <asp:Button ID="Button2" runat="server" CommandName="update" Text="update" />
            <asp:Button ID="Button3" runat="server" CommandName="cancel" Text="Cancel" />
        </EditItemTemplate>
    </asp:DataList>


    </form>
</body>

そして、以下のC#コード

ページの読み込み

  protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        bind();
    }

}

コマンドコードを編集する

protected void DataList1_EditCommand(object source, DataListCommandEventArgs e)
    {
        DataList1.EditItemIndex = e.Item.ItemIndex;
        DataList1.DataBind();

    }

コマンドコードをキャンセル

protected void DataList1_CancelCommand(object source, DataListCommandEventArgs e)
{
    DataList1.EditItemIndex = -1;
    DataList1.DataBind();
}

これはデータリストバインディングです

protected void bind()
{
    SqlConnection con = new SqlConnection(strconnection);
    con.Open();
    string qry = "select top 10 outlet_id,company_name from outlet_table ";
    SqlDataAdapter Da = new SqlDataAdapter(qry, con);
    DataSet ds = new DataSet();
    Da.Fill(ds, "outlet");
    DataList1.DataSource = ds;
    DataList1.DataBind();
}

これは、編集ボタンをクリックした後に表示されるクライアント側の HTML データです。

<body>
<form name="form1" method="post" action="Demo.aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="zVlNF4jkNpf9ZmIBtYaHSdSPa9l8zKVA4H0JXxnhqVytzfrbVWUuOuY8004hXYRY8KuBKqPKgV3kS4RQBegrJQ5LErL3VdV9TeluNoxAZLtDu0/62xR8Ij/jD638pPKb">
</div>

<div>

    <input type="hidden" name="__VIEWSTATEENCRYPTED" id="__VIEWSTATEENCRYPTED" value="">
</div>





    </form>


</body>
4

1 に答える 1

1

データを Datalist に再バインドする必要があります。

これ:

protected void DataList1_EditCommand(object source, DataListCommandEventArgs e)
    {
        DataList1.EditItemIndex = e.Item.ItemIndex;
        DataList1.DataBind();

    }

次のようになります。

protected void DataList1_EditCommand(object source, DataListCommandEventArgs e)
    {
        DataList1.EditItemIndex = e.Item.ItemIndex;
        bind();

    }

ポストバックすると、データリストはデータソースを失い、再び必要になります。

于 2012-12-27T20:10:42.487 に答える