高手帮忙看一下,GridView控件....我吐得了

shenopkss 2009-12-04 03:43:14
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

public partial class GridView2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
SetBind();
}
}
private void SetBind()
{
SqlConnection con = new SqlConnection("server=.;database=jinge;uid=sa;pwd=;");
SqlDataAdapter sda = new SqlDataAdapter("select * from News", con);
DataSet ds = new DataSet();
DataTable dt = new DataTable();
sda.Fill(dt);
ds.Tables.Add(dt);
GridView1.DataSource = ds.Tables[0];
GridView1.DataKeyNames = new string[] { "n_id" };
GridView1.DataBind();
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
SetBind();
}
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
SetBind();
}

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

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
string id = GridView1.DataKeys[0].Value.ToString();
[color=#FF0000]string n_id = ((TextBox)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text.ToString().Trim(); //为什么我地方老是报错:指定的参数已超出有效值的范围。参数名: index[/color]
Response.Write(n_id);
}
}
...全文
239 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
shenopkss 2009-12-09
  • 打赏
  • 举报
回复
谢谢各位。此问题已解决。3Q!!
string n_id = ((TextBox)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text.ToString().Trim()
可以使用
shenopkss 2009-12-09
  • 打赏
  • 举报
回复
!郁闷!
我知道可以用:
string n_id = ((TextBox)GridView1.Rows[e.RowIndex].FindControls("你控件的ID")).Text.ToString().Trim()
这个方法获得TextBox的值:

但是我的那个TextBox是GridView编辑选项自动生成的?我该怎么找ID?
Cracker_Man 2009-12-05
  • 打赏
  • 举报
回复
FindControl
jiaqijun 2009-12-05
  • 打赏
  • 举报
回复
<%--开始滚动--%>
<table>
<tr><td >
<div id=sc286cn style=overflow:hidden;height:80px;width:900px;>
<table align=left style="width: 546px; height: 75px">
<tr>
<td id=sc286cn1 valign=top style="width: 5px">
<asp:DataList ID="DataList1" runat="server" Height="54px" HorizontalAlign="Center"
RepeatColumns="9" RepeatDirection="Horizontal" Width="370px">
<ItemTemplate>
<asp:Image ID="Image1" runat="server" AlternateText='<%# Eval("title") %>' Height="74px"
ImageUrl='<%# Eval("path") %>' Width="128px" />
</ItemTemplate>
</asp:DataList></td><td id="sc286cn2" valign="top" style="width: 3px"></td></tr></table>
</div>
<script type="text/javascript">
var speed=1//速度数值越大速度越慢
sc286cn2.innerHTML=sc286cn1.innerHTML
function Marquee(){
if(sc286cn2.offsetWidth-sc286cn.scrollLeft<=0)
sc286cn.scrollLeft-=sc286cn1.offsetWidth
else{
sc286cn.scrollLeft++
}
}
var MyMar=setInterval(Marquee,speed)
sc286cn.onmouseover=function() {clearInterval(MyMar)}
sc286cn.onmouseout=function() {MyMar=setInterval(Marquee,speed)}
</script>
</td></tr>
</table>
<%--结束滚动--%>
后台要绑定数据库DataList读取数据库中的内容
jiaqijun 2009-12-05
  • 打赏
  • 举报
回复
string n_id = ((TextBox)GridView1.Rows[e.RowIndex].FindCotrols("控件名称")).Text.ToString().Trim(); 是比较好地答案。还要看你地html页面时怎么搞地,看是否是模板
legu1 2009-12-04
  • 打赏
  • 举报
回复
改为e.row.findControls("controls")
shenopkss 2009-12-04
  • 打赏
  • 举报
回复
痛心啊?我想问的这是为什么?
string n_id = ((TextBox)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text.ToString().Trim()
为什么报错
GridView1.DataKeyNames = new string[] { "n_id" };
在不设置主键的情况下 :
测试string n_id = ((TextBox)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text.ToString().Trim();
不出现问题。添加之后就报错了,我是更新数据库,如果没主键就完成不了了
不明白这是为什么?
liuyjcel 2009-12-04
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 scascor 的回复:]
string n_id = ((TextBox)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text.ToString().Trim()
换成 string n_id = ((TextBox)GridView1.Rows[e.RowIndex].FindControls("你控件的ID")).Text.ToString().Trim()

[/Quote]
正解。
shenopkss 2009-12-04
  • 打赏
  • 举报
回复
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridView2.aspx.cs" Inherits="GridView2" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True"
BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px"
CellPadding="3" Font-Size="Small" Height="196px" OnPageIndexChanging="GridView1_PageIndexChanging" OnRowEditing="GridView1_RowEditing" PageSize="5"
Width="717px" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowUpdating="GridView1_RowUpdating">
<FooterStyle BackColor="White" ForeColor="#000066" />
<Columns>
<asp:CommandField HeaderText="操作" ShowEditButton="True" />
</Columns>
<RowStyle ForeColor="#000066" />
<SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
<HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
</asp:GridView>

</div>
</form>
</body>
</html>
o0mickyaa 2009-12-04
  • 打赏
  • 举报
回复
你把前台也贴出来吧
o0mickyaa 2009-12-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zengfanxing 的回复:]
Controls[0]).
[/Quote]

UP!!!
再者没有什么控件是不可以设ID的,前台设或后台新建对象设
shenopkss 2009-12-04
  • 打赏
  • 举报
回复
我新手,刚学GridView,希望大家多多照顾我这个小菜鸟吧
shenopkss 2009-12-04
  • 打赏
  • 举报
回复
用不了n_id= ((TextBox)GridView1.Rows[e.RowIndex].FindCotrols("控件名称")).Text.ToString().Trim();
这个方法。因为控件时Gridview自带的,我设置不了ID
shenopkss 2009-12-04
  • 打赏
  • 举报
回复
GridView1.DataKeyNames = new string[] { "n_id" };
在不设置主键的情况下 :
测试string n_id = ((TextBox)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text.ToString().Trim();
不出现问题。添加之后就报错了,我是更新数据库,如果没主键就完成不了了
不明白这是为什么?
o0mickyaa 2009-12-04
  • 打赏
  • 举报
回复
我觉得gridview1.rows[e.rowindex]后面不可以接CELLS了吧
lvfeng19806001 2009-12-04
  • 打赏
  • 举报
回复
你找的是第二列的控件吗?我一般还要这样判断一下,不知大家都用不用
if(GridView1.Rows[e.RowIndex].RowState==DataControlRowState.Edit){
//再找
}
还有独孤求败大侠,这是Gridview控件的RowUpdating事件,e貌似没有Row属性吧?
楼主,还是看一下你的前台!
devilsu 2009-12-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zengfanxing 的回复:]
C# codestring n_id= ((TextBox)GridView1.Rows[e.RowIndex].FindCotrols("控件名称")).Text.ToString().Trim();
[/Quote]
这种应该好使的。如果不好使最好在贴一下GridView控件的前台代码。
mbh0210 2009-12-04
  • 打赏
  • 举报
回复
System.Web.UI.WebControls.RadioButton rd1 = e.Row.Cells[1].FindControl("rd1") as System.Web.UI.WebControls.RadioButton

类似这样的
scascor 2009-12-04
  • 打赏
  • 举报
回复
string n_id = ((TextBox)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text.ToString().Trim()
换成 string n_id = ((TextBox)GridView1.Rows[e.RowIndex].FindControls("你控件的ID")).Text.ToString().Trim()
加载更多回复(4)

62,071

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧