我就2个字段一个ID,一个NAME,都绑定好了.protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindGridView();
}
} private void BindGridView()
{
SqlConnection cn = new SqlConnection(@"server=localhost;uid=sa;pwd=;database=test");
SqlCommand cmd = new SqlCommand("select * from bbb", cn);
cn.Open();
GridView1.DataSource = cmd.ExecuteReader();
GridView1.DataKeyNames = new string[] { "id" };
GridView1.DataBind();
cn.Close();
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes.Add("onmouseover", "javascript:DG_changeBackColor(this, true);");
e.Row.Attributes.Add("onmouseout", "javascript:DG_changeBackColor(this,false);"); e.Row.Attributes.Add("onClick", "javascript:__doPostBack('" + GridView1.ID + "','Select$" + e.Row.RowIndex + "');");
}
}
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
lblid.Text=(这里请高手补全,选中行后获取被选中行的主键);
}
{
if (!IsPostBack)
{
BindGridView();
}
} private void BindGridView()
{
SqlConnection cn = new SqlConnection(@"server=localhost;uid=sa;pwd=;database=test");
SqlCommand cmd = new SqlCommand("select * from bbb", cn);
cn.Open();
GridView1.DataSource = cmd.ExecuteReader();
GridView1.DataKeyNames = new string[] { "id" };
GridView1.DataBind();
cn.Close();
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes.Add("onmouseover", "javascript:DG_changeBackColor(this, true);");
e.Row.Attributes.Add("onmouseout", "javascript:DG_changeBackColor(this,false);"); e.Row.Attributes.Add("onClick", "javascript:__doPostBack('" + GridView1.ID + "','Select$" + e.Row.RowIndex + "');");
}
}
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
lblid.Text=(这里请高手补全,选中行后获取被选中行的主键);
}
解决方案 »
- <script language="C#" runat="server" 与<%@ page Language="C#" %> <script runat="server" >有啥区别,能举例子么?
- Windows客户程序添加Web引用失败
- 控件组开发中遇到的奇怪问题
- 求教.net.mail发邮件的问题
- 在网页中有没有类似c#应用程序中的DropDown的控件!
- 怎样取得我上网的真实IP地址
- 怎样判断DropdownList控件已经获得焦点
- 动态绑定DataGrid,怎么去设置它的列?
- 网络dll安全问题,欢迎讨论。
- 请问在asp.net下的webmenu控件怎么个用法?
- 请教B/S结构的网络视频监控系统例子或思路
- 在程序中用qq邮箱发邮件(该邮箱支持smtp,且发送邮件的数量没有超过限制的数量),出现“命令顺序不正确。 服务器响应为: Error: need EHLO and AUTH first !”
lblid.Value = row.Cells[1].Text;//Cells[填你主键的位置]
lblid.Value = row.Cells[1].Text;
当点不同的行的时候,想获取该行的主键就获取不到了。
老师
SelectedIndexChanging好象是选中前触发的吧?我的意思是想选中行后,再变化下面的LABLE。TEXT属性
所以我用了SelectedIndexChanged...
具体还请指教
{
GridViewRow row = GridView1.SelectedRow;
lblid.Value = row.Cells[0].Text;
}
我的方法试没试呀,这个应该可以的
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
int index1;
for (int i = 0; i < GridView1.Rows.Count; i++)
{
if (GridView1.Rows[i].RowType == DataControlRowType.DataRow)
{
index1 = GridView1.Rows[i].RowIndex;
lblid.Text = GridView1.DataKeys[index1]["sid"].ToString();//此处sid是你绑定表的主键字段
}
}
}
lblid 没有VALUE 来显示TEXT吧.
lblID.Text = g.DataKeys[e.NewSelectedIndex].Value.ToString();
{
GridView g = (GridView)sender;
Response.Write(g.DataKeys[e.NewSelectedIndex].Value.ToString());
}我事件换成SelectedIndexChanging还是打印不出来,网页左下角一直提示网页有错误.
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
GridViewRow row = GridView1.SelectedRow;
lblid.Text= row.Cells[0].Text;
}
那不是废话吗...我肯定变通过了,还是没有用,如果你觉得可以,可以把我的代码复制到一个新建的页面.
数据很简单 我写下
create database test
go
create table bbb
(
id int identity primary key,
name varchar(50)
)insert into bbb
values('aa')
insert into bbb
values('bb')
{
GridView.DataKeys[i].Value.ToString()
}
建议你看 Scott Michell 的那个asp.net2.0系列文章。使用“if (!IsPostBack) ”以及“GridView1.DataBind(); ”都是asp.net1.1的写法,可能你读的入门教材的作者比较喜欢asp.net1.1的写法。这种写法,你会在很多不应该读取后台数据库的地方强行绑定数据,会有错误的应用程序逻辑。使用asp.net2.0的数据绑定控件,它把最合理的数据绑定和更新逻辑给你封装起来,MVC风格编程使你减少了错误。
e.Row.Attributes.Add("onClick", "javascript:__doPostBack('" + GridView1.ID + "','Select$" + e.Row.RowIndex + "');");我前台应该少了一段JS的函数.这段代码是通过朋友COPY过来的,有没有朋友可以帮忙写下这个函数.
<a href='**.aspx?Id='<%#Eval("BulletinId") %>' target="main"><%#Eval("**")%></a>
SelectedIndexChanging和SelectedIndexChanged都不用
对不起 本人菜鸟
<head id="Head1" runat="server">
<title>无标题页 </title>
<script type="text/javascript">
function showID(str)
{
// alert(str);
document.getElementById("Label1").innerText = str;
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound">
</asp:GridView>
<asp:Label ID="Label1" runat="server"></asp:Label>
</form>
</body>
</html> protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindGridView();
}
}private void BindGridView()
{
SqlConnection cn = new SqlConnection(@"server=localhost;uid=sa;pwd=;database=test");
SqlCommand cmd = new SqlCommand("select * from bbb", cn);
cn.Open();
GridView1.DataSource = cmd.ExecuteReader();
GridView1.DataKeyNames = new string[] { "id" };
GridView1.DataBind();
cn.Close();
}protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes.Add("onClick", "showID('" + GridView1.DataKeys[e.Row.RowIndex].Value.ToString() + "')");
// e.Row.Attributes.Add("onClick", "alert('" + GridView1.DataKeys[e.Row.RowIndex].Value.ToString() + "')");
}
}
首先,要了解__doPostBack函数的两个参数的含义:第一个参数所指是引起回发的控件源在客户端的引用.第二个参数指你在其它函数调用时想引用的代表_eventargument,而前者在客户端可以通过eventtarget来获取.第二个参数如果不需要可以以空字符串省略.
楼主请看,应该是形如:__doPostBack__doPostBack('"+((LinkButton)e.Item.Cells[5].Controls[0]).ClientID.Replace("__","$_")+"','')此时为什么要用replace转换呢,因为它是在容器控件里,到了客户端会失真解析成另外的样子.onclick事件触发
e.Item.Attributes.Add("ondblclick","__doPostBack('"+((LinkButton)e.Item.Cells[5].Controls[0]).ClientID.Replace("__","$_")+"','')");
请参考:http://blog.csdn.net/LoveCherry/archive/2005/05/21/377325.aspx
希望能对你有所帮助http://topic.csdn.net/u/20080602/20/a59ff45b-ee6f-4650-8613-0fe518fc96ba.html
你这个有点跑题了,这个头象借来玩玩而已,我问的问题,你这点水平根本无法解决,不然会让我的楼贴的如此高吗?这里是技术区,不是吵架区,我老师4个星星,我2个三角,你才三个三角,咋们半斤八两,而且我问的问题,你觉得以你的资历可以回答出来吗?我个人刚出道,确实不行,但你不要侮辱我的老师,我说过一句话,要批评别人就把实力给拿出来,你整了半天,狗屁代码都没有写出来,你解决的了问题再来发话.PS:今天刚上班,没有来的及看上面的回贴,我测试下,如果OK 就结帖了,谢谢大家这么多人的帮忙.