这个问题已经发过两次贴了,但方法有好几个,而且都是c#,我用的vb所以一直到现在还没弄明白,我再仔细发一次,希望能得到解决,不管c#,vb,最好能给段代码说明一下,非常感谢! 非常急!
问题1:原来的时候我是用 右键--编辑列,加了个选择按钮,改名“查看”请问在这种情况下应该怎么做,代码应该怎么写?
问题2:现在改成自定义列,按钮“查看”,这种情况下又该怎么做,代码怎么写?
实现功能,当点击“查看”的时候,上面的控件里显示数据库中该条记录的内容
我在网上看过好多,大概都是先取行号(怎么取),然后读取列值,这么做不用再重新读取数据库了吗? <asp:GridView ID="gv1" datakeynames="id" AllowPaging="True" AutoGenerateColumns="False" PageSize="5" OnPageIndexChanging="gv1_pageIndexChanging" runat="server" style="text-align: center; font-size: 10pt;" CellPadding="4" ForeColor="#333333" GridLines="None" Width="485px" >
<Columns >
<asp:BoundField DataField ="id" HeaderText ="编号" />
<asp:BoundField DataField="title" HeaderText ="标题" />
<asp:BoundField DataField="name" HeaderText="发布者" />
<asp:BoundField DataField ="publishtime" HeaderText="发布时间" />
<asp:TemplateField>
<ItemTemplate><asp:Button Text="查看" runat="server" /></ItemTemplate>
</asp:TemplateField>
</Columns>
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="#EFF3FB" />
<EditRowStyle BackColor="#2461BF" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>
XXX代表的是一条记录的主键,可能通过这些这主键从数据源查找数据啊
然后在跳转的页面里request("id"),就能取到你要传递的信息的ID,然后根据这个ID去检索信息
<ItemTemplate>
<asp:Button Text="查看" runat="server" ID="btnView" OnClick="btnView_Click" />
<asp:HiddenField ID="hidId" runat="server" Value='<%#Eval("id")%>' />
</ItemTemplate>2.CS代码:protected void btnView_Click(object sender,EventArgs e)
{
Button btnView=(Button)sender;
int curId=0;
HiddenField hidId=(HiddenField)btnView.Parent.FindControl("hidId");
if(hidId!=null)
{
curId=Convert.ToInt32(hidId.Value);
}
if(curId>0) //curId即为当前查看行的Id
{
using(SqlDataReader sdr=DBHelper.ExecuteReader("SELECT * FROM Table WHERE Id=@Id",new SqlParameter("@Id",curId)))
{
if(sdr!=null && sdr.Read())
{
txtTitle.Text=sdr["Title"].TOString();
.....
.....
}
}
}
}
如代码:
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Select"
CommandArgument="<%#GridView1.Rows.Count%>" Text="单击" ></asp:LinkButton>
</ItemTemplate>
注意的是CommandName用来判断是那一列是你单击的。CommandArgument是用来取行号的。Convert .ToInt32 (e.CommandArgument )].//取得行号
this.GridView1.Rows[Convert .ToInt32 (e.CommandArgument )].Cells[1].Text.ToString();//取得行号对应的第2个格子的值。(也许是主键。)
if (e.CommandName == "Select"){//用来判断是点击的那一列。
}
试试、
<asp:Button ID="lbEdit" runat="server" CommandName="btnlook" Text="查看明细" CommandArgument=' <%#Bind("XXX")%>' />
</asp:TemplateField>
前台有id绑定
然后双击出来这个事件.RowCommand事件.
protected void gdv_RowCommand(object sender, GridViewCommandEventArgs e)
{
try
{
DonationDataAccess.UserDAO dao = new DonationDataAccess.UserDAO();
if (e.CommandName == "btnlook")
{
Response.Redirect("~/test.aspx?id=" + Convert.ToInt32(e.CommandArgument));
}
}
catch (Exception ex)
{ }
}
后台有commandname,commandArgument
而且这只是查看吗?直接一个连接link到另一个页面也可以阿
你点下你自己的头像看看。
gv1.DataKeys[索引].Value.ToString()