1

i have a simplest code..and its working fine if I run it as just Dotnet simple webpage.

but when i use this code in VisualWebPart it react in other way..

the problem is...

I m making CRUD operation on GridView when I am clicking on Update

button it should call the GridView1_RowUpdating Event but it is calling GridView1_RowEditing what should be called in clicking of Edit Button.

Dont know what is going wrong...pls suggest

<%@ Assembly Name="$SharePoint.Project.AssemblyFullName$" %>
<%@ Assembly Name="Microsoft.Web.CommandUI, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="asp" Namespace="System.Web.UI" Assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Register TagPrefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="VisualWebPart1UserControl.ascx.cs" Inherits="VWP_Test_GridUpdateEvent.VisualWebPart1.VisualWebPart1UserControl" %>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" AutoGenerateEditButton="True"
    OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowEditing="GridView1_RowEditing"
    OnRowUpdating="GridView1_RowUpdating">
    <Columns>
        <asp:TemplateField HeaderText="Column 1">
            <ItemTemplate>
                <%#Eval("one") %>
            </ItemTemplate>
            <EditItemTemplate>
                <asp:TextBox ID="txtOne" runat="server" Text='<%# Eval("one") %>'></asp:TextBox>
            </EditItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Column 2">
            <ItemTemplate>
                <%#Eval("two") %>
            </ItemTemplate>
            <EditItemTemplate>
                <asp:TextBox ID="txtTwo" runat="server" Text='<%# Eval("two") %>'></asp:TextBox>
            </EditItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

//-----------------------------------------------------------

using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Data;
namespace VWP_Test_GridUpdateEvent.VisualWebPart1
{

    public partial class VisualWebPart1UserControl : UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                DataTable dt = new DataTable();
                dt.Columns.Add("one");
                dt.Columns.Add("two");
                DataRow dRow = dt.NewRow();
                dRow[0] = "One-One";
                dRow[1] = "One-Two";
                dt.Rows.Add(dRow);
                DataRow dRow1 = dt.NewRow();
                dRow1[0] = "Two-One";
                dRow1[1] = "Two-Two";
                dt.Rows.Add(dRow1);
                dt.AcceptChanges();
                ViewState["DataTable"] = dt;
                BindGrid();
            }
        }

        private void BindGrid()
        {
            GridView1.DataSource = (DataTable)ViewState["DataTable"];
            GridView1.DataBind();
        }

        protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            GridView1.EditIndex = e.NewEditIndex;
            BindGrid();
        }

        protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            int aa = GridView1.EditIndex;

            string strOne = ((TextBox)GridView1.Rows[GridView1.EditIndex].Cells[1].Controls[1]).Text;
            string strTwo = ((TextBox)GridView1.Rows[GridView1.EditIndex].Cells[2].Controls[1]).Text;


            GridView1.EditIndex = -1;
            BindGrid();

        }

        protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            GridView1.EditIndex = -1;
            BindGrid();
        }
    }
}

Here is the markup for the GridView

 <asp:GridView ID="gvListData" runat="server" Width="100%" AutoGenerateColumns="false"
            AutoGenerateEditButton="true"
            AutoGenerateDeleteButton="true"
            OnRowUpdating="gvListData_RowUpdating"
            OnRowEditing="gvListData_RowEditing"
            OnRowCancelingEdit="gvListData_RowCancelingEdit" OnRowDeleting="gvListData_RowDeleting" OnRowDataBound="gvListData_RowDataBound">
            <Columns>

                <asp:TemplateField HeaderText="Title">
                    <ItemTemplate>
                        <asp:Label ID="lblTitle" runat="server" BackColor="Transparent" ReadOnly="true" BorderStyle="None" Text='<%# Eval("title") %>' />
                        <asp:HiddenField ID="hdnID" runat="server" Value='<%# Eval("ID") %>' />
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:TextBox ID="txtTitleEdit" runat="server" Text='<%# Eval("title") %>' />
                        <asp:HiddenField ID="hdnIDEdit" runat="server" Value='<%# Eval("ID") %>' />
                    </EditItemTemplate>
                </asp:TemplateField>

                <asp:TemplateField HeaderText="Salary">
                    <ItemTemplate>
                        <asp:TextBox ID="txtSalary" runat="server" BackColor="Transparent" ReadOnly="true" BorderStyle="None" Text='<%# Eval("salary") %>' />
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:TextBox ID="txtSalaryEdit" runat="server" Text='<%# Eval("salary") %>' />
                    </EditItemTemplate>
                </asp:TemplateField>

                <asp:TemplateField HeaderText="Designation">
                    <ItemTemplate>
                        <asp:TextBox ID="txtDesignation" runat="server" BackColor="Transparent" ReadOnly="true" BorderStyle="None" Text='<%# Eval("designation") %>' />
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:TextBox ID="txtDesignationEdit" runat="server" Text='<%# Eval("designation") %>' />
                    </EditItemTemplate>
                </asp:TemplateField>

            </Columns>
        </asp:GridView>
Arsalan Adam Khatri
  • 14,531
  • 3
  • 36
  • 59
dpk
  • 45
  • 1
  • 7

0 Answers0