<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Full-house &#187; Rowindex</title>
	<atom:link href="http://full-house.cn/index.php/index.php/rowindex/feed" rel="self" type="application/rss+xml" />
	<link>http://full-house.cn</link>
	<description>SELECT blog FROM TonyHu.full-house WHERE subject IN (Life,Web,Database)</description>
	<lastBuildDate>Wed, 25 Aug 2010 07:40:43 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>在GridView的RowCommand事件中获取Rowindex,即获得数据行所在页的索引号</title>
		<link>http://full-house.cn/index.php/200909/gridview-rowcommand-rowindex.html</link>
		<comments>http://full-house.cn/index.php/200909/gridview-rowcommand-rowindex.html#comments</comments>
		<pubDate>Tue, 08 Sep 2009 03:50:23 +0000</pubDate>
		<dc:creator>Tony hu</dc:creator>
				<category><![CDATA[ASP.net]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Gridview]]></category>
		<category><![CDATA[Rowindex]]></category>

		<guid isPermaLink="false">http://full-house.cn/?p=522</guid>
		<description><![CDATA[先看一下我的后台代码：
        protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            //得到行所在的索引号
            int idx = Convert.ToInt32(e.CommandArgument);
            //得到各个控件的值
            string id = GridView1.Rows[idx].Cells[0].Text;
            string txt_ArtworkNum = ((TextBox)GridView1.Rows[idx].FindControl(&#8220;TextBox2&#8243;)).Text;
            string txt_RollNum = ((TextBox)GridView1.Rows[idx].FindControl(&#8220;TextBox3&#8243;)).Text;
            string txt_Artwork = ((TextBox)GridView1.Rows[idx].FindControl(&#8220;TextBox4&#8243;)).Text.Replace(&#8220;&#8216;&#8221;, &#8220;&#8221;&#8221;);
            string txt_ShelfAddress = ((TextBox)GridView1.Rows[idx].FindControl(&#8220;TextBox5&#8243;)).Text;
            string txt_OrderQty = ((TextBox)GridView1.Rows[idx].FindControl(&#8220;TextBox6&#8243;)).Text;
            string txt_Supplier = ((TextBox)GridView1.Rows[idx].FindControl(&#8220;TextBox7&#8243;)).Text.Replace(&#8220;&#8216;&#8221;,&#8221;&#8221;&#8221;);
            string txt_StartDate = ((TextBox)GridView1.Rows[idx].FindControl(&#8220;TextBox1&#8243;)).Text;
//其它代码省略&#8230;&#8230;
           
再看一下原先的前台代码
&#60;ItemTemplate&#62;
 &#60;asp:Button ID=&#8221;Button3&#8243; runat=&#8221;server&#8221; CausesValidation=&#8221;False&#8221;
CommandArgument=&#8221;&#60;%# Container.DataItemIndex %&#62;&#8221;
CommandName=&#8221;Entry&#8221; Text=&#8221;入库&#8221; OnClientClick=&#8221;return confirm(&#8216;确认要将此钢轮移出备用库放入当前使用库吗？&#8217;)&#8221;/&#62;
 &#60;/ItemTemplate&#62;
 &#60;/asp:TemplateField&#62;
最后看一下改进后的代码
&#60;ItemTemplate&#62;
 &#60;asp:Button [...]]]></description>
			<content:encoded><![CDATA[<p>先看一下我的后台代码：</p>
<blockquote><p>        protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)<br />
        {<br />
            //得到行所在的索引号<br />
            int idx = Convert.ToInt32(e.CommandArgument);<br />
            //得到各个控件的值<br />
            string id = GridView1.Rows[idx].Cells[0].Text;<br />
            string txt_ArtworkNum = ((TextBox)GridView1.Rows[idx].FindControl(&#8220;TextBox2&#8243;)).Text;<br />
            string txt_RollNum = ((TextBox)GridView1.Rows[idx].FindControl(&#8220;TextBox3&#8243;)).Text;<br />
            string txt_Artwork = ((TextBox)GridView1.Rows[idx].FindControl(&#8220;TextBox4&#8243;)).Text.Replace(&#8220;&#8216;&#8221;, &#8220;&#8221;&#8221;);<br />
            string txt_ShelfAddress = ((TextBox)GridView1.Rows[idx].FindControl(&#8220;TextBox5&#8243;)).Text;<br />
            string txt_OrderQty = ((TextBox)GridView1.Rows[idx].FindControl(&#8220;TextBox6&#8243;)).Text;<br />
            string txt_Supplier = ((TextBox)GridView1.Rows[idx].FindControl(&#8220;TextBox7&#8243;)).Text.Replace(&#8220;&#8216;&#8221;,&#8221;&#8221;&#8221;);<br />
            string txt_StartDate = ((TextBox)GridView1.Rows[idx].FindControl(&#8220;TextBox1&#8243;)).Text;<br />
//其它代码省略&#8230;&#8230;<br />
           </p></blockquote>
<p>再看一下原先的前台代码</p>
<blockquote><p>&lt;ItemTemplate&gt;<br />
 &lt;asp:Button ID=&#8221;Button3&#8243; runat=&#8221;server&#8221; CausesValidation=&#8221;False&#8221;<br />
<strong>CommandArgument=&#8221;&lt;%# Container.DataItemIndex %&gt;&#8221;<br />
</strong>CommandName=&#8221;Entry&#8221; Text=&#8221;入库&#8221; OnClientClick=&#8221;return confirm(&#8216;确认要将此钢轮移出备用库放入当前使用库吗？&#8217;)&#8221;/&gt;<br />
 &lt;/ItemTemplate&gt;<br />
 &lt;/asp:TemplateField&gt;</p></blockquote>
<p>最后看一下改进后的代码</p>
<blockquote><p>&lt;ItemTemplate&gt;<br />
 &lt;asp:Button ID=&#8221;Button3&#8243; runat=&#8221;server&#8221; CausesValidation=&#8221;False&#8221;<br />
<strong>CommandArgument=&#8221;&lt;%# ((GridViewRow) Container).RowIndex %&gt;&#8221;<br />
</strong>CommandName=&#8221;Entry&#8221; Text=&#8221;入库&#8221; OnClientClick=&#8221;return confirm(&#8216;确认要将此钢轮移出备用库放入当前使用库吗？&#8217;)&#8221;/&gt;<br />
&lt;/ItemTemplate&gt;<br />
&lt;/asp:TemplateField&gt;</p></blockquote>
<p>其实就是为了说明一个问题：</p>
<p>如果用<strong>Container.DataItemIndex</strong> 在后台代码中得到的是这一数据行在这个数据表中的序列，如果此Gridview不分页的话，用起来没有任何问题，如果分页的话，就不行了。如我们操作的是第二页的第二条记录，得到的序列是 11 ，即 idx =11 ,而我期望的是1.</p>
<p>如果用<strong>((GridViewRow) Container).RowIndex</strong> 那 idx=1; 即这一行代码得到的是此数据行在当前Gridview页面中的序列，如果PageSize=10的话，那idx 最大为9，最小为0.</p>
<p>今天项目中用到的，特别记录一下.</p>
]]></content:encoded>
			<wfw:commentRss>http://full-house.cn/index.php/200909/gridview-rowcommand-rowindex.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
