2013-03-19 88 views
0

我有gridview,我不是很擅长gridview行的asp.net编辑,删除,更新命令。在这里,我想通过单击编辑模式来更改gridview行模式进行编辑。但是当我点击编辑按钮时它什么都不做。有人可以检查什么可能是错的?gridview编辑命令错误。行不改变模式更新

<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> 

回答

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 
} 
+0

如果我不提供rowediting()方法

代码。这会工作吗? – spiral 2013-03-19 21:25:51

+0

否。没有行编辑,您会遇到点击两次问题。 http://stackoverflow.com/questions/5433776/gridview-edit-click-twice-problems。 – imAbhi 2013-03-19 21:37:50

+0

太棒了!喜欢! – spiral 2013-03-19 21:54:11