0

私はgridviewを持っていますが、gridview行のasp.net Edit、Delete、Updateコマンドについてはあまり詳しくありません。ここでは、編集モードをクリックして、グリッドビューの行モードを編集するように変更します。しかし、編集ボタンをクリックしても何も起こりません。誰かが何が間違っているのかを確認できますか?

   <asp:GridView ID="GridViewTopics" runat="server" AutoGenerateColumns="False" DataKeyNames="Id"
                            GridLines="Horizontal" OnRowEditing="GridViewTopics_RowEditing" CssClass="gridstyle"
                            Style="margin-left: 30px;" Width="230px">
                            <Columns>
                                <asp:TemplateField HeaderText="Topics">
                                    <ItemTemplate>
                                        <table>
                                            <tr>
                                                <td>
                                                    <div>
                                                        <asp:Label ID="LabelTopicName" runat="server" Text='<%# Eval("Name") %>'></asp:Label>
                                                    </div>
                                                </td>
                                                <td valign="top" align="right" >
                                                    <div>
                                                        <asp:LinkButton ID="LinkButtonEdit" runat="server" Text="Edit" CommandName="Edit"></asp:LinkButton>
                                                    </div>
                                                </td>
                                            </tr>
                                        </table>
                                    </ItemTemplate>
                                    <EditItemTemplate>
                                        <asp:TextBox ID="TextBoxEditTopicName" runat="server" Text='<%# Bind("Name") %>'></asp:TextBox>
                                        <asp:LinkButton ID="LinkButtonUpdate" runat="server" CausesValidation="True" CommandName="Update"
                                            Text="Update"></asp:LinkButton>
                                        <asp:LinkButton ID="LinkButtonCancel" runat="server" CausesValidation="False" CommandName="Cancel"
                                            Text="Cancel"></asp:LinkButton>
                                    </EditItemTemplate>
                                </asp:TemplateField>
                            </Columns>
                            <HeaderStyle CssClass="headerclass" />
                        </asp:GridView>
4

1 に答える 1

1

コマンドフィールドを使用してみてください。また、更新ボタンとキャンセル ボタンも自動生成されます。それに応じてイベントを処理します。

以下のコード

ASPX

<asp:GridView ID="GridViewTopics" runat="server" AutoGenerateColumns="False" DataKeyNames="Id"
    GridLines="Horizontal" OnRowEditing="GridViewTopics_RowEditing" CssClass="gridstyle" OnRowCancelingEdit="GridViewTopics_RowCancelingEdit" OnRowUpdating="GridViewTopics_RowUpdating"
    Style="margin-left: 30px;" Width="230px">
    <Columns>
        <asp:TemplateField HeaderText="Topics">
            <ItemTemplate>
                <asp:Label ID="LabelTopicName" runat="server" Text='<%# Eval("Name") %>'></asp:Label>
            </ItemTemplate>
            <EditItemTemplate>
                <asp:TextBox ID="TextBoxEditTopicName" runat="server" Text='<%# Bind("Name") %>'></asp:TextBox>
            </EditItemTemplate>
        </asp:TemplateField>
        <asp:CommandField ButtonType="Link" ShowEditButton="true"/>
    </Columns>
    <HeaderStyle CssClass="headerclass" />
</asp:GridView>

C#

protected void Page_Load(object sender, System.EventArgs e)
{
if (!Page.IsPostBack) {
    GridViewTopics.DataSource = GetSomeSampleData();
    GridViewTopics.DataBind();
}
}
private DataTable GetSomeSampleData()
{
    DataTable dt = new DataTable();
    dt.Columns.Add("Name");
    dt.Columns.Add("Id");
    for (index = 1; index <= 10; index++) {
        DataRow dr = dt.NewRow();
        dr("Id") = index;
        dr("Name") = "SomeName" + index.ToString();
        dt.Rows.Add(dr);
  }
    return dt;
}

protected void GridViewTopics_RowEditing(object sender, GridViewEditEventArgs e)
{
   GridViewTopics.DataSource = GetSomeSampleData();
   GridViewTopics.EditIndex = e.NewEditIndex;
   GridViewTopics.DataBind();
}
protected void GridViewTopics_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
//Handle accordingly
}
protected void GridViewTopics_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
//Handle accordingly
}
于 2013-03-19T20:57:23.143 に答える