在GridView中针对鼠标单击的某一独门单元格进行编辑,用GridView编辑更新独立的单元格

因为驾驭了被选中的行和列的目录,所以可以通过把显示控件的Visible设置为false,编辑控件的Visible设置为true来把某部独立的单元格设置为编写情势。
然后透过免去单元格的品质来删除被入选单元格的单击事件。

在GridView的RowDataBound的风浪内对每一行中的每种单元格举行遍历,让其全部点击触发事件的能力。

1.7Sorted

任何每一列的ItemTemplate中有3个可知的Label控件和一个不可见的Text博克斯或DropDownList控件。
为了有利于,咱们称Label为显示控件,TextBox或DropDownList为编写控件。

被选中的单元格也务必移除点击的风云。

手动分页必须有PageIndexChanging事件,添加PageIndexChanging事件,然后添加如下代码

参考
   
·GridView和DataList响应单击数据行和双击数据行事件
    ·ASP.NET
2.0数量教程

图片 1if (this.GridView1.SelectedIndex > -1)
图片 2图片 3图片 4{
图片 5    this.GridView1.UpdateRow(this.GridView1.SelectedIndex, false);
图片 6}
图片 7

//对数码源上的多少进行格式化

结论
如果您想在GridView中五次只针对一个单元格举办编辑,那么那个格局将会对您抱有扶助。

在这么些例子中,GridView的RowUpdating先检查各样单元格,看是否处在编辑方式下。借使处在编辑格局的单元格被找到,那么数量更新将被执行。

小编们使用RowCreated事件而不应用RowDataBound事件的因由在于,唯有当数码鲜明的绑定到多少Web控件时才会抓住RowDataBound事件

本条德姆o中的其余示例
应用SQL数据源控件编辑某一独自的GridView单元格
用SqlDataSouce控件完结那个技能必要对GridView的RowUpdating事件做一些修改。
当更新GridView的行的时候,SqlDataSource控件一般要把值(values)从艾德itItemTemplate转移到NewValues集合里。
因为大家从不利用艾德itItemTemplate,所以这种状态下值(values)不会自行地更换成NewValues集合里。

ClientScriptManager.RegisterFor伊夫ntValuedation通过重载Render方法来调用。

1.2PageIndexChanging

图片 8    int _rowIndex = int.Parse(e.CommandArgument.ToString());      
图片 9    int _columnIndex = int.Parse(Request.Form[“__EVENTARGUMENT”]);

您只怕不想对整行举办更新,并且不奇怪更新是采用EditItemTemplate,在它里面放上编辑状态所要突显的控件;而事实上,你可能只对其中五个单元格感兴趣,比如用上DropDownList来展开单元格筛选,而正规必须整行成编辑状态,那怎样才能直接只让三个单独的单元格成编辑状态吧?那就是本篇小说所要做的工作。

运转后直接彰显分页的1,只有1体现正常,假若点选其余的,比如2只怕4怎么样其余其余,指示:
GridView“XXX”激发了未处理的风浪“PageIndexChanging”。 

初稿公布日期:二〇〇七.04.07
作者:Declan
Bright

翻译:webabcd

为了保障RowUpdating在GridView在未选中行状态下也可以被调用,例如作者在编写情势下编制文本框点击了“Enter”键,页面整页回发,那样保险其余数据的变动被保存。

        protected void GridView1_RowCancelingEdit(object sender,
GridViewCancelEditEventArgs e)
        {//平日用的。
            GridView1.EditIndex = -1;
            Bind();
        }

为了验证而注册回发和回调数据
在RowDataBound中开创的自定义事件必需求在页中注册。
通过重写Render方法来调用ClientScriptManager.RegisterFor伊芙ntValidation。
通过GridViewRow.UniqueID重返行的唯一ID,按纽的唯一ID通过在行的唯一ID后附加“$ct100”而变化。

图片 10protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
图片 11图片 12图片 13{
图片 14    if (e.Row.RowType == DataControlRowType.DataRow)
图片 15图片 16    图片 17{
图片 18        // 得到第③个单元格的LinkButton控件
图片 19        LinkButton _singleClickButton = (LinkButton)e.Row.Cells[0].Controls[0];
图片 20        // 得到客户端javascript可以唤起LinkButton回发事件的本子
图片 21        string _jsSingle = ClientScript.GetPostBackClientHyperlink(
图片 22            _singleClickButton, “”);
图片 23
图片 24        // 添加事件到各种可编制的单元格
图片 25        for (int columnIndex = _firstEditCellIndex; columnIndex < 
图片 26            e.Row.Cells.Count; columnIndex++)
图片 27图片 28        图片 29{
图片 30            // 插入列索引参数
图片 31            string js = _jsSingle.Insert(_jsSingle.Length – 2, 
图片 32                columnIndex.ToString());
图片 33            // 给单元格添加javscript的onclick属性
图片 34            e.Row.Cells[columnIndex].Attributes[“onclick”] = js;
图片 35            // 给单元格添加鼠标样式
图片 36            e.Row.Cells[columnIndex].Attributes[“style”] += 
图片 37                “cursor:pointer;cursor:hand;”;
图片 38        }
图片 39    }
图片 40}
图片 41

1.3PageIndexChanged

在RowCommand事件内读出命令参数和事件参数。
那会告知大家被入选的行和列的目录。

图片 42
本篇提供的源代码中,GridView的首先列是CommandName为SingleClick的asp:ButtonField的控件,并且它的Visible置false.

</asp:TemplateField>

图片 43<Columns>                
图片 44    <asp:ButtonField Text=”SingleClick” CommandName=”SingleClick” Visible=”False” />
图片 45</Columns>

为了便于起见,作者将叫这一个Label为“非编辑状态控件”和TextBox恐怕DropdownList的“编辑状态控件”。

GridView.aspx)
控件中成立行时暴发。

图片 46    if (this.GridView1.SelectedIndex > -1)
图片 47图片 48    图片 49{
图片 50        this.GridView1.UpdateRow(this.GridView1.SelectedIndex, false);
图片 51    }   

图片 52//得到中选单元格的来得控件使它不可知
图片 53Control _displayControl = 
图片 54    _gridView.Rows[_rowIndex].Cells[_columnIndex].Controls[1];
图片 55_displayControl.Visible = false;
图片 56// 得到中选单元格的编写控件是它可知
图片 57Control _editControl = 
图片 58    _gridView.Rows[_rowIndex].Cells[_columnIndex].Controls[3];
图片 59_editControl.Visible = true;
图片 60// 移除选中单元格的点击属性
图片 61   _gridView.Rows[_rowIndex].Cells[_columnIndex].Attributes.Clear();
图片 62

(注:

编制某二个单身的GridView单元格。
图片 63

源代码下载

  
//这里是不常用的,那是例用了My97DatePicker那个JS控件,使某一列的编撰文本,出现时间控件。          
   

图片 64    protected override void Render(HtmlTextWriter writer)
图片 65图片 66    图片 67{
图片 68        foreach (GridViewRow r in GridView1.Rows)
图片 69图片 70        图片 71{
图片 72            if (r.RowType == DataControlRowType.DataRow)
图片 73图片 74            图片 75{
图片 76                for (int columnIndex = _firstEditCellIndex; columnIndex < r.Cells.Count; columnIndex++)
图片 77图片 78                图片 79{
图片 80                    Page.ClientScript.RegisterForEventValidation(r.UniqueID + “$ctl00”, columnIndex.ToString());
图片 81                }
图片 82            }
图片 83        }
图片 84      
图片 85        base.Render(writer);
图片 86    }

再有部分代码是在事件回发之后在编制控件上置主题。即使编辑控件是1个DropDownList那么它的SelectedValue属性被置上突显控件的值,假如编辑控件是1个TextBox那么它的文书被选大校准备进行编辑。

3.假诺有这样贰个判断,二个“审核”状态,3个“未审核”状态。在同贰个gridview中,能过“审核”的,则他的操作按钮为“废除审批”,”未审核“
数据的操作按钮为“通过核查”。这样须求在绑定的时候举办判定。
前台页面

背景
正文基于本身事先写的一篇小说:GridView和DataList响应单击数据行和双击数据行事件。若是您不知道什么样让GridView响应单击数据行事件,那么您可以在翻阅本文此前先看看那篇小说。

图片 87// 遍历GridView的列索引查找处于编辑格局下的单元格
图片 88for (int i = 1; i < _gridView.Columns.Count; i++)
图片 89图片 90图片 91{
图片 92    // Get the editing control for the cell
图片 93    Control _editControl = _gridView.Rows[e.RowIndex].Cells[i].Controls[3];
图片 94    if (_editControl.Visible)
图片 95图片 96    图片 97{
图片 98       // 更新数据
图片 99    }
图片 100}
图片 101

1.15RowUpdated

图片 102    <asp:TemplateField HeaderText=”Task”>
图片 103        <ItemTemplate>
图片 104            <asp:Label ID=”DescriptionLabel” runat=”server” Text='<%# Eval(“Description”) %>’></asp:Label>
图片 105            <asp:TextBox ID=”Description” runat=”server” Text='<%# Eval(“Description”) %>’ Width=”175px” visible=”false”></asp:TextBox>
图片 106        </ItemTemplate>
图片 107    </asp:TemplateField>

在首先个例子中,一些样本数量绑定到多个DataTable中贮存在Session里

<asp:Button runat=”server”
visibile=”false: text=”操作” />

在那一个德姆o中,作者把事件被触发的历史记录也写到了页里。

翻译出处:http://www.codeproject.com/KB/webforms/EditGridviewCells.aspx

3.2.3 GridView.RowEditing 事件

此间即使有一对单击后更改单元格样式的附加代码,然则最主要的代码依然与地点所述是一律的。
图片 108

编写独立的单元格

          
TextBox tb =
(TextBox)GridView1.Rows[e.NewEditIndex].FindControl(“TextBox1”);
            ViewState[“vdtime”] = tb.Text;           
           
tb.Attributes.Add(“onclick”,”WdatePicker({dateFmt:’yyyy-MM-dd
HH:mm:ss’})”) ;
        }

这将预防其余“回发或回调参数无效”的失实。

登记回发或回调数据以开展表达

         
                e.Row.Attributes.Add(“onmouseout”,
“this.style.backgroundColor=c”);                           
                e.Row.Attributes[“style”] = “Cursor:hand”;
            }

除此以外,假如您的数据行的编排格局须要占用越来越多的半空中的话,那么针对每1个独自的单元格举行编制要优化针对全数数据行进行编制。
那里,作者将示范怎么样落到实处这样的功能,又何以去处管事人件验证(event
validation)。

图片 109protected override void Render(HtmlTextWriter writer)
图片 110图片 111图片 112{
图片 113    foreach (GridViewRow r in GridView1.Rows)
图片 114图片 115    图片 116{
图片 117        if (r.RowType == DataControlRowType.DataRow)
图片 118图片 119        图片 120{
图片 121            for (int columnIndex = _firstEditCellIndex; columnIndex < 
图片 122                r.Cells.Count; columnIndex++)
图片 123图片 124            图片 125{
图片 126                Page.ClientScript.RegisterForEventValidation(
图片 127                    r.UniqueID + “$ctl00”, columnIndex.ToString());
图片 128            }
图片 129        }
图片 130    }
图片 131   
图片 132    base.Render(writer);
图片 133}
图片 134

在单击 GridView 控件内某一行的 Select
按钮时暴发,但在 GridView
控件执行接纳操作之后。此事件司空眼惯用于在甄选了该控件中的某行后执行某项职责。

自身所示范的那么些GridView有三个不可知的asp:ButtonField控件,它地处GridView的率先列,名为“SingleClick”。
它用于给GridView的数目行增加单击事件。

图片 135// 在当选的编排控件上置大旨
图片 136ClientScript.RegisterStartupScript(GetType(), “SetFocus”,
图片 137    “<script>document.getElementById(
图片 138    ‘” + _editControl.ClientID + “‘).focus();</script>”);
图片 139// 假如编辑控件是dropdownlist置selectedValue为突显控件的值
图片 140if (_editControl is DropDownList && _displayControl is Label)
图片 141图片 142图片 143{
图片 144    ((DropDownList)_editControl).SelectedValue = ( 
图片 145        (Label)_displayControl).Text;
图片 146}
图片 147// 若是编辑控件是TextBox文本选上准备展开编制
图片 148if (_editControl is TextBox)
图片 149图片 150图片 151{
图片 152   ((TextBox)_editControl).Attributes.Add(“onfocus”, “this.select()”);
图片 153}
图片 154

      1.1RowCommand

在RowDataBound事件内循环为每一数据行的每一单元格增加单击事件。
使用单元格在数据行中的目录作为事件参数,这样在单元格触发了单击事件后大家就足以清楚终归是哪些单元格被单击了。

在GridView的RowCommand事件,命令参数和事件参数被重新寻找,它带给大家接纳某一单元格所在的行索引和列索引。

1.9RowCreated

图片 155    // 拿到被入选单元格的来得控件并安装其不可见
图片 156    Control _displayControl = _gridView.Rows[_rowIndex].Cells[_columnIndex].Controls[1]; 
图片 157    _displayControl.Visible = false;
图片 158    // 得到被入选单元格的编写控件并设置其可见
图片 159    Control _editControl = _gridView.Rows[_rowIndex].Cells[_columnIndex].Controls[3];
图片 160    _editControl.Visible = true;
图片 161    // 清除被选中单元格属性以删除click事件
图片 162    _gridView.Rows[_rowIndex].Cells[_columnIndex].Attributes.Clear();

图片 163int _rowIndex = int.Parse(e.CommandArgument.ToString());
图片 164int _columnIndex = int.Parse(Request.Form[“__EVENTARGUMENT”]);

   protected void
GridView1_RowDataBound(object sender, GridViewRowEventArgs
e)

为了确保RowUpdating事件在编排单元格后被激发,要在Page_Load中来触发这么些事件。
编辑了TextBox后,通过按回车键只怕单击另一单元格来使页面做回发处理,上面的这段代码就是用来确保其他数据的变动都会被更新。

图片 165<asp:TemplateField HeaderText=”Task”>
图片 166    <ItemTemplate>
图片 167
图片 168        <asp:Label ID=”DescriptionLabel” runat=”server” 
图片 169            Text='<%# Eval(“Description”) %>’></asp:Label>
图片 170        <asp:TextBox ID=”Description” runat=”server” 
图片 171            Text='<%# Eval(“Description”) %>’ Width=”175px” 
图片 172            visible=”false”></asp:TextBox>
图片 173    </ItemTemplate>
图片 174</asp:TemplateField>
图片 175

  前台页面

我在App_Data文件夹下使用了一个粗略的SQL Server Express数据库。
(要使用你协调的数据库的话,你可以修改web.config里的连年字符串)

介绍

  3.1.RowCommand 事件

[翻译]在GridView中针对鼠标单击的某一独自单元格进行编制

而在其它的列中,利用ItemTemplate,在里面都有多个凸现的Label控件,和不可见的Text博克斯大概DropdownList控件。

protected void GridView1_RowEditing(object sender,
GridViewEditEventArgs e)
        {

此处的措施就是用突显控件来突显数据,当单元格所富含的显得控件被单击的时候,则把显示控件的Visible属性设置为false并且把编辑控件的Visible属性设置为true。
那里并非采纳艾德itItemTemplat。

当所选单元格的行索引和列索引已知的景观下,单元格可以很自在地对编辑状态进行控件的可知转换。

3.2.2. e.Row.Cells[x].FindControl(“YourcontrolName”)。
   
这是在单元格内查找有些服务器控件,从而获取其数据值。那种方法得以操作单元格内的服务器控件。此法一般用于拍卖模板列中的数据或控件。

初稿地址:http://www.codeproject.com/KB/webforms/EditGridviewCells.aspx
[原文源码下载]
[翻译改后源码下载]

想法是如此的,刚开端GridView处于突显状态(约等于“非编辑状态”),当某壹个单元格被点击的时候,它把Label控件置不可知而编写控件Text博克斯大概DropdownList置肯见,而艾德itItemTemplate不必要用到。

从事件中判断e.CommandName和对第几行举办的操作e.CommandArgument。

下边有一对代码用于回发服务器后装置要点到编辑控件,如若编辑控件是DropDownList的话,那么它的SelectedValue要设置为显示控件的值,假使编辑控件是Text博克斯的话,那么为了搞好编辑的准备即将使它的公文被入选。

开创在RowDataBound的自定义事件必须在页面中被登记。

</ItemTemplate>

翻译注:事件表明(伊芙ntValidation)。出于安全目的,此功效验证回发或回调事件的参数是不是来自最初彰显那几个事件的服务器控件。如若数额有效并且是预期的,则动用ClientScriptManager.RegisterFor伊芙ntValidation方法来注册回发或回调数据以进行求证。

给每种单元的列索引定义上有的属性参数,如onclick,style等等。

  1. (DataRowView)e.Row.DataItem).Row.ItemArray[x].ToString()。
       
    此法的主干是e.Row.DataItem,它是GridView的行数据集,为Object类型,将其转会为DataRowView类型后,可以赢得越多的操作方法。此数据集表示数据源当前行的上上下下字段列,ItemArray[x]是近年来行全体字段列的数组对象,可以透过索引x拿到任意字段值。此法的英勇之处是足以对数据源的满贯字段查询。

  2. DataBinder.Eval(e.Row.DataItem,
    “YourDataFieldName”).ToString()。
       
    此法依旧基于e.Row.DataItem,其特征是更神速的收获数据源的任意字段值,因为运用了DataBinder.伊娃l(),必要小心的是不用写错字段名称。

  3. 将e.Row.DataItem转化为自定义类型,落成多少类型化。
        例如:
        DSRequestTracking.TB_RequestTrackingRow
    rtrow=(DSRequestTracking.TB_RequestTrackingRow)((DataRowView)e.Row.DataItem).Row;
        RequestStatusDropDownList1.SelectedValue =
    rtrow.StatusID.ToString();
        其中DSRequestTracking是通过DSRequestTracking.xsd文件在工程中自定义的强类型DataSet,
    TB_RequestTrackingRow是VS自动为此强类型生成的创制数据行对象的主意。通过此法,完结了类型化数据的广泛应用。数据类型化的利益多多,同理可得的便是传三个体系数据给艺术,取代一大堆参数,此外即便再也不会发生字段名拼写错误的情形。

Aspx页的后置代码与SQL Data Source示例是一律的。
ObjectDataSource通过TaskDataAccess.cs类里的GetTasks和UpdateTask方法来治本数据。

图片 176<Columns>
图片 177    <asp:ButtonField Text=”SingleClick” CommandName=”SingleClick” Visible=”False” />
图片 178</Columns>

1.6Sorting

采用对象数据源控件编辑某一单身的GridView单元格
本示例使用了App_Code文件夹内的五个类:
    ·Task.cs – 职责目的
    ·TaskDataAccess.cs – 管理义务目的

那控件是为着点击GridView的有个别单元格而触发点击事件:

单击编辑方式中某一行的“裁撤”按钮之后,将吸引 RowCanceling艾德it
事件,但在该行退出编辑方式此前。允许你提供以下事件处理方法,即若是发生此事件就实施3个自定义例程,如:倘诺打消操作将行置于不期待有的状态,则甘休该操作。

抱有电子数码表样式的GridView
那里有三个与电子数据表的体裁很像的GridView。
(固然它看起来像1个电子数据表,不过并不是的确有像电子数据表一样的功能,它照旧是三个GridView。)

在asp.net 中,GridView允许你通过艾德itIndex属性来修改数据的一行,同样也亟须举行整行更新。

1.5SelectedIndexChanged

只要GridView处于编辑格局以来,那么要在RowUpdating事件里去探寻被选中行的每三个单元格。
如若发现单元格处于编辑形式以来,那么就调用“更新”代码。
在那么些德姆o中,数据保存在DataTable里,而以此DataTable则储存在session中。

3.2.RowDataBound事件
3.2.1. Cells[x].Txt。
   
从列单元格的文本值获取。那种艺术大致高率,最为常用,不过意义单纯。此法存在多少个缺陷:
    (1)不可以赢得到安装了隐藏属性的数量列的值,所取到的值为“”(空)。
   
(2)只能够得到在HTML中定义过的数据列,不可以查询数据源中的当前数据行的拥有字段列。一般意况下,通过HTML设置GridView的字段列的数额往往小于数据源的实际字段数量,这是因为从事情逻辑的角度看,并不是独具的字段都是要来得在页面上的。当需求选择没有被突显的字段时,此法就不可以一向满足要求了。

图片 179    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
图片 180图片 181    图片 182{
图片 183        if (e.Row.RowType == DataControlRowType.DataRow)
图片 184图片 185        图片 186{
图片 187            // 从第2个单元格内得到LinkButton控件
图片 188            LinkButton _singleClickButton = (LinkButton)e.Row.Cells[0].Controls[0];
图片 189            // 重临多个字符串,表示对包括目标控件的 ID 和事件参数的回发函数的 JavaScript 调用
图片 190            string _jsSingle = ClientScript.GetPostBackClientHyperlink(_singleClickButton, “”);
图片 191
图片 192            // 给每1个可编制的单元格扩充事件
图片 193            for (int columnIndex = _firstEditCellIndex; columnIndex < e.Row.Cells.Count; columnIndex++)
图片 194图片 195            图片 196{
图片 197                // 扩张列索引作为事件参数
图片 198                string js = _jsSingle.Insert(_jsSingle.Length – 2, columnIndex.ToString());
图片 199                // 给单元格扩充onclick事件
图片 200                e.Row.Cells[columnIndex].Attributes[“onclick”] = js;
图片 201                // 给单元格伸张鼠标经过时指针样式
图片 202                e.Row.Cells[columnIndex].Attributes[“style”] += “cursor:pointer;cursor:hand;”; 
图片 203            }     
图片 204        }
图片 205    }

}

介绍
ASP.NET的GridView控件允许你通过设置它的艾德itIndex属性来编排数据行,此时全方位数据行都处于编辑方式。
假设您在EditItemTemplate的有的列中使用了DropDownList控件,那么您可能不期望任何数据行都处于编辑方式。
因为,若是每一个DropDownList控件都有广大取舍的话,那么一次加载全体DropDownList控件的具备选项就会促成页面执行缓慢。

在 GridView
控件中的某些行被绑定到二个数量记录时发生。此事件司空眼惯用于在有些行被绑定到多少时修改该行的始末。

图片 206    // 循环每一列以找到远在编辑方式下的单元格
图片 207    for (int i = 1; i < _gridView.Columns.Count; i++)
图片 208图片 209    图片 210{
图片 211        // 得到单元格的编写控件
图片 212        Control _editControl = _gridView.Rows[e.RowIndex].Cells[i].Controls[3];
图片 213        if (_editControl.Visible)
图片 214图片 215        图片 216{
图片 217           图片 218. update the data
图片 219        }
图片 220    }

在单击某一页导航按钮时,但在 GridView.aspx)
控件处理分页操作以前发生

用SQL数据源控件已毕全数电子数据表样式的GridView
本示例与地点的基本相同,可是它修改了GridView的RowUpdating事件以使其同意用SqlDataSource控件来办事。
 

1.8RowDataBound

图片 221    // 设置要点到被入选的编辑控件
图片 222    ClientScript.RegisterStartupScript(GetType(), “SetFocus”, 
图片 223        “<script>document.getElementById(‘” + _editControl.ClientID + “‘).focus();</script>”);
图片 224    // 如若编辑控件是DropDownList的话
图片 225    // SelectedValue设置为浮现控件的值
图片 226    if (_editControl is DropDownList && _displayControl is Label)
图片 227图片 228    图片 229{
图片 230        ((DropDownList)_editControl).SelectedValue = ((Label)_displayControl).Text;
图片 231    }                 
图片 232    // 假设编辑控件是TextBox的话则选汉语本框内文本
图片 233    if (_editControl is TextBox)
图片 234图片 235    图片 236{
图片 237       ((TextBox)_editControl).Attributes.Add(“onfocus”, “this.select()”);
图片 238    }

  protected void GridView1_RowUpdating(object sender,
GridViewUpdateEventArgs e)
        {

图片 239    e.NewValues.Add(key, value);

<asp:TemplateField HeaderText=”操作”>
    <ItemTemplate>

(此事件可以处理在点击“编辑”之后,在拓展“更新”“撤除”操作以前可以干一些活,例如,在进展编制时,需要某一列上的编辑功用,注册一些本子,事填加一些,编辑时的特效成效。例如,编辑某一列,时参预“js时间控件”,

//超链接
  <a
href=”addXuni.aspx?id=<%#Eval(“product_id”).ToString()%>&modify=1″>
                                           //绑定图片 <img 
src=”..it_16x16.gif”  border=”0″ /></a>
                                    </ItemTemplate>

后台代码:

<asp:TemplateField HeaderText=”充值时间”>
                                  <EditItemTemplate>
                                      <asp:TextBox ID=”TextBox1″
runat=”server” Text='<%# Bind(“cztime”, “{0:yyyy-MM-dd HH:mm:ss}”)
%>’></asp:TextBox>
                                  </EditItemTemplate>
                                  <ItemStyle Width=”120px” />
                                  <ItemTemplate>
                                      <asp:Label ID=”Label1″
runat=”server” Text='<%# Bind(“cztime”, “{0:yyyy-MM-dd HH:mm:ss}”)
%>’></asp:Label>
                                  </ItemTemplate>
                              </asp:TemplateField>

     if (e.Row.RowType == DataControlRowType.DataRow)
{

//删除操作
      <asp:ImageButton runat=”server”
ImageUrl=”..lete_16x16.gif”
                                            Style=”position: relative”
CommandArgument='<%#Eval(“product_id”) %>’ CommandName=”del”  
OnClientClick=”return confirm(‘确认删除那条单据吗?’)” /> 

protected void GridView1_RowCommand(object sender,
GridViewCommandEventArgs e)
        {
            if (e.CommandName == “del”)
            {
               int index = Convert.ToInt32(e.CommandArgument);
               Boolean flag =
CardInfoListManager.DeleteCardInfoListById(index);
               if (flag == true)
               {
                  
this.ClientScript.RegisterStartupScript(this.GetType(), “”,
“<script>alert(‘删除成功!’)</script>”);
                   Bind();
               }
            }
        }

单击编辑格局中某一行的“裁撤”按钮之后,在该行退出编辑方式此前发生

protected void
GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Attributes.Add(“onmouseover”,
“c=this.style.backgroundColor;this.style.backgroundColor=’#f2ffe3′”);    

protected void GridView1_PageIndexChanging(object sender,
GridViewPageEventArgs e)
{

1.10RowDeleting

后台代码:

在单击页导航按钮时爆发,但在 GridView
控件执行分页操作之后。此事件不以为奇用于在用户定位到该控件中不一样的页之后需求举行某项任务时。

        if(DataBinder.Eval(e.Row.DataItem,
“YourDataFieldName”).ToString()==”1″)

        } 

{

}

二 、拿到主键

1.12RowEditing

RowDataBound事件是gridview绑定数据源时,可以自定每列的体裁,背景颜色,绑定必要格式化的多少,举办绑定的判定。

此事件持续自 BaseDataBoundControl
控件,在 GridView 控件完结到数据源的绑定后发出。

if (e.Row.RowType ==
DataControlRowType.DataRow)
{
switch (e.Row.Cells[3].Text.Trim())
{
case “0”:
e.Row.Cells[3].Text = “跟单员”;
break;
case “1”:
e.Row.Cells[3].Text = “采购员”;
break;
}

一 、事件作证

在单击 GridView 控件内某一行的 Delete
按钮(其 CommandName 属性设置为“Delete”的按钮)时发生,但在 GridView
控件从数据源删除记录以前。此事件不足为奇用于打消删除操作。

3.2.5GridView.RowUpdating 事件

     //更新操作
            GridView1.EditIndex = -1;
            Bind();         
        }
3.1.6 GridView.PageIndexChanging 事件

(注:在展开编制时,一般的都是编写某一行的多寡,若是只想编辑某一行某一列的值,就把任何列设置成“readonly”只读型,就能够了,一般适应,<asp:buttonFiled>那一个,便不符合模板)

            //那两行是最常用的。
            GridView1.EditIndex = e.NewEditIndex;
            Bind();

</asp:TemplateField>
后台代码:

RowCreated 与RowDataBound比较

}

1.13RowCancelingEdit

1.11RowDeleted

在单击 GridView 控件内某一行的 Select
按钮(其 CommandName 属性设置为“Select”的按钮)时发生,但在 GridView
控件执行采用操作从前。此事件不以为奇用于打消选取操作。

在 GridView
控件中开创新行时发生。此事件不足为奇用于在开创有个别行时修改该行的布局或外观。

     
若要判断引发命令事件之数据行的目录,请使用事件自变量的CommandArgument属性,会将该事件自变量传递至数据绑定控件的下令事件,ButtonField类会自动用适合的索引值填入CommandArgument属性。在事变响应函数中得以依据差其他CommandName来做分化的操作。

       //数据源读取数据为1的为“通过核对”0“未审核”

{

1.4SelectedIndexChanging

<asp:TemplateField
HeaderText=”操作”>
    <ItemTemplate>

在单击 GridView 控件内某一行的 Delete
按钮时发生,但在 GridView
控件从数据源删除记录之后。此事件见惯不惊用于检查删除操作的结果。

GridViewCancel艾德it伊芙ntArgs
对象将被传送给事件处理方法,以便你能够规定当前行的目录,还能提示应适可而止废除操作。若要截止裁撤操作,请将
GridViewCancel艾德it伊夫ntArgs 对象的 Cancel 属性设置为 true。)

      //日常采用的。
       GridView1.PageIndex = e.NewPageIndex;
       GridView1.DataBind();
}

//拿到主键值   
(要安装GridView属性中的DataKeyNames=”id”那几个特性,ID)     
            string str1 =
GridView1.DataKeys[e.RowIndex].Value.ToString();

在 GridView
控件中单击某些按钮时发出。此事件不足为奇用于在该控件中单击有个别按钮时举行某项任务。

   Button bt=e.row[

例:

3.2.4 GridView.RowCancelingEdit
事件

//设置鼠标经过第叁行的背景颜色

GridView的RowCreated与RowDataBound的多个组别在于RowCreated事件是那样的,不管多少是或不是再度绑定到GridView,只要在GridView里新增一行记录就将掀起RowCreated事件。那表示,当发生PostBack回传事件时,哪怕数据来源视图状态,也会吸引RowCreated事件。

1.16DataBound

在单击 GridView 控件内某一行的 Cancel
按钮(其 CommandName 属性设置为“Cancel”的按钮)时发出,但在 GridView
控件退出编辑格局在此之前。此事件司空见惯用于截止废除操作。

1.14RowUpdating

在手动给Gridview邦定数据源时(不是前台利用DataSource控件绑定),会冒出那种景况:

在单击 GridView 控件内某一行的 Update
按钮时发出,但在 GridView
控件更新记录之后。此事件司空见惯用来检查更新操作的结果。

在单击某些用于对列举行排序的超链接时发生,但在
GridView
控件执行排序操作在此之前。此事件不乏先例用于撤消排序操作或实施自定义的排序例程。

发出在单击某一行的“更新”按钮之后, GridView 控件对该行开展更新此前

 

在单击 GridView 控件内某一行的 Update
按钮(其 CommandName 属性设置为“Update”的按钮)时爆发,但在 GridView
控件更新记录从前。此事件不乏先例用于撤除更新操作。

 

前台页面

例:

常用的有:

<asp:Button runat=”server”
visibile=false text=”操作” />

例:

在单击页导航按钮时产生,但在 GridView
控件执行分页操作以前。此事件不以为奇用于裁撤分页操作。

//得到第6列上的文本值。
            string str =
(GridView1.Rows[e.RowIndex].Cells[4].FindControl(“TextBox1”) as
TextBox).Text; 

    
当ButtonField按钮字段被按下时,GridView控件会掀起RowCommand事件,

此事件爆发在单击某一行的“编辑”按钮之后,
GridView 控件进入编辑情势此前

3.1.7GridView.RowCreated 事件

在单击某些用于对列进行排序的超链接时暴发,但在
GridView
控件执行排序操作之后。此事件不乏先例用于在用户单击对列进行排序的超链接之后执行某项任务。

在单击 GridView 控件内某一行的 艾德it
按钮(其 CommandName 属性设置为“艾德it”的按钮)时发生,但在 GridView
控件进入编辑格局此前。此事件司空眼惯用于撤销编辑操作。

gridview 事件学习: