单击gridview一行后再弹出一个gridview显示表里的信息怎么弄,比如点击图片上的第一行后触发事件再显示一个信息。
e.Row.Attributes.Add("onclick","getdata()");
getdata()是我定义的一个方法,上面的实现不了,说缺少对象,怎么弄啊?还是上面的方法根本就实现不了这样的功能呢??
e.Row.Attributes.Add("onclick","getdata()");
getdata()是我定义的一个方法,上面的实现不了,说缺少对象,怎么弄啊?还是上面的方法根本就实现不了这样的功能呢??
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{ if (e.CommandName == "你设定的名字")
{
int cwId = int.Parse(e.CommandArgument.ToString());
//开始写你要弹框 另一个页面的gridview2 }
}
首先在gridview里面定义好自己想要显示的字段如下面的图前台代码就像这样,我这是拿自己的项目代码哦,都类似你可以改改大同小异。
前台: <asp:GridView ID="gvMusic" runat="server" AutoGenerateColumns="False"
Width="645px" OnRowCommand="gvMusic_RowCommand" >
<Columns>
<asp:TemplateField HeaderText="选择">
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="musicName" HeaderText="歌曲名称" />
<asp:BoundField DataField="singerName" HeaderText="歌手" />
<asp:BoundField DataField="specialName" HeaderText="专辑名称" />
<asp:BoundField DataField="auditionSum" HeaderText="试听次数" />
<asp:BoundField DataField="downSum" HeaderText="下载次数" />
<asp:BoundField DataField="fileSize" HeaderText="文件大小" />
<asp:TemplateField HeaderText="试听">
<ItemTemplate>
<a onclick="window.open('playMusic.aspx?id=<%#Eval("id")%>','','width=380,height=260');" href="#" ><img border="0" src="images/shit.GIF" width="16" height="16" /></a>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="下载">
<ItemTemplate>
<asp:LinkButton ID="likbtnDown" runat="server" CommandName="down" Font-Underline="False" CommandArgument='<%# Eval("id") %>'><img border="0" src="images/xz.gif" width="16" height="16" /></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<RowStyle CssClass="huise1" />
<HeaderStyle CssClass="huise1" />
</asp:GridView>//////后台 protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//调用自定义bindGV方法,显示歌曲的详细信息
bindGV();
bindAudition();
} protected void bindGV()
{
//创建SQL语句,该语句用来查询歌曲的详细信息
string sqlSel = "select * from tb_musicInfo where musicType=" + Request["id"].ToString();
//设置GridView控件的数据源
gvMusic.DataSource = dataOperate.getRows(sqlSel);
//设置GridView控件的主键
gvMusic.DataKeyNames = new string[] { "id" };
//绑定GridView控件
gvMusic.DataBind();
}拿下载的代码看吧,
<asp:TemplateField HeaderText="下载">
<ItemTemplate>
<asp:LinkButton ID="likbtnDown" runat="server" CommandName="down" Font-Underline="False" CommandArgument='<%# Eval("id") %>'><img border="0" src="images/xz.gif" width="16" height="16" /></asp:LinkButton>
我们加入的是一个ItemTemplate>模版在里面放入的是一个LinkButton控件后台一定要注意绑定id作为参数,gvMusic.DataKeyNames = new string[] { "id" };这样就可以当点击某行时进行传参了,下面是传参获取的代码
//实现下载操作
protected void gvMusic_RowCommand(object sender, GridViewCommandEventArgs e)
{
//判断是否为下载操作
if (e.CommandName == "down")
{
//获取歌曲的id
string id = e.CommandArgument.ToString();
//创建SQL语句,查询歌曲的详细信息
string sqlSel = "select musicPath from tb_musicInfo where id=" + id;
//创建SQL语句,更新歌曲的下载次数
string sqlUpdate = "update tb_musicInfo set downSum=downSum+1 where id=" + id; ;
//执行SQL语句
dataOperate.execSql(sqlUpdate);
//调用自定义downFile方法实现歌曲的下载操作
downFile(dataOperate.getTier(sqlSel)); }
}这个说明一点e.CommandName == "down"这段,我们是有前提的,我在加入ItemTemplate>模版在里面放入的是一个LinkButton控件的时候顺便要给它起个命令名,就是down,这样就可以判断了
我们再通入参入的id来进行你想要的第二个gridview进行数据的查询绑定就打到你想的效果了
举个例子我的项目里的绑定
protected void bindAudition()
{
string sqlSel = "select top 10 * from tb_musicInfo order by auditionSum desc";
gvAudition.DataSource = dataOperate.getRows(sqlSel);
gvAudition.DataKeyNames = new string[] { "id" };
gvAudition.DataBind();
}好了就OK了,思路还是很简单的,希望你自己修改下就可以了,大同小异.
你的代码应该是这样的
(LinkButton)e.Row.FindControl("lkbtn").Attributes.Add("onclick","getdata()");
这样也可以给某行的控件加上属性 ,
你的那e.Row.Attributes.Add("onclick","getdata()"是给哪个行的东西加的呢,所以会提示缺少对象