C# 向gridview中的imageButton添加功能
我有一个ImageButton控件作为GridView控件的一部分,该控件作为ItemTemplate显示在同一GridView中。我有一个常规的按钮控件,我在其中添加了如下代码C# 向gridview中的imageButton添加功能,c#,asp.net,C#,Asp.net,我有一个ImageButton控件作为GridView控件的一部分,该控件作为ItemTemplate显示在同一GridView中。我有一个常规的按钮控件,我在其中添加了如下代码 if (e.CommandName == "addToSession") { int index = Convert.ToInt32(e.CommandArgument); GridViewRow selectedRow = ((GridView)e.CommandSource).Rows[index
if (e.CommandName == "addToSession")
{
int index = Convert.ToInt32(e.CommandArgument);
GridViewRow selectedRow = ((GridView)e.CommandSource).Rows[index];
string ISBN = selectedRow.Cells[0].Text;
string bookTitle = selectedRow.Cells[1].Text;
string image = selectedRow.Cells[2].Text;
//storing title, author, pictureUrl into session variables to 'carry them over' to RateBook.aspx
Service s = new Service();
Session["ISBN"] = ISBN;
Session["bookTitle"] = bookTitle;
Session["ImageUrl"] = s.returnImageUrl(bookTitle);
if (Session["userName"] == null)
{
Response.Redirect("registerPage.aspx");
}
else
{
Response.Redirect("RateBook.aspx");
}
}
else if (e.CommandName == "ratedBooks")
{
int index = Convert.ToInt32(e.CommandArgument);
GridViewRow selectedRow = ((GridView)e.CommandSource).Rows[index];
string bookTitle = selectedRow.Cells[1].Text;
Service s = new Service();
Session["ImageUrl"] = s.returnImageUrl(bookTitle);
Response.Redirect("BookRated.aspx");
}
当我运行这段代码时,我得到一个格式异常,我也不知道为什么。我已经改变了一点图像按钮,并嵌套在一个链接按钮,似乎更正确的图像
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="ratedBooks">
<asp:Image ID="ImageButton1" ImageUrl='<%#Eval("pictureUrl") %>' runat="server" />
</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
请告知
问候,
Arian一个可能的解决方案是添加ItemDataBound事件处理程序并搜索图像按钮更改其图像url
MyGrid.RowDataBound += new RepeaterItemEventHandler(MyGrid_RowDataBound);
void MyGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowIndex > -1)
{
ImageButton image = e.Row.FindControl("MY_IMAGE_CONTROL") as ImageButton;
image.ImageUrl = "PATH_TO_IMAGE";
}
}
希望有帮助。我相信您可以使用
ImageButton
满足您的需求,因为它支持所有主要的按钮
功能,包括命令名
(请参阅)
试试这个:
<asp:ImageButton ID="LinkButton1" runat="server"
CommandName="ratedBooks"
ImageUrl='<%#Eval("pictureUrl") %>' />
原因是此代码段中没有为按钮的CommandArgument赋值Convert.ToInt32
需要传入一个有效的整数值,这意味着ImageButton
需要将一个数字绑定到其CommandArgument
属性
如果您的解决方案基于此MSDN引用(),请注意,
您需要CommandArgument
<asp:TemplateField ShowHeader="False">
<ItemTemplate>
<asp:ImageButton ID="ImageButton1" runat="server" CommandName="Delete" CommandArgument="<%# ((GridViewRow) Container).RowIndex %>" ImageUrl="~/Modelos/Img/deleted.gif" />
</ItemTemplate>
</asp:TemplateField>
在ASPX上
<asp:GridView ID="grid1" runat="server" onselectedindexchanged="GridView1_SelectedIndexChanged" ...
@marco:在GridView TemplateField的ItemTemplate上下文中,您完全可以使用Eval()
语句。您好……我删除了我的第一条注释……谢谢您的建议!
public void GridView_RowCommand(Object sender, GridViewCommandEventArgs e)
{
string t;
if (e.CommandName == "Delete")
{
int index = Convert.ToInt32(e.CommandArgument);
GridViewRow selectedRow = grid1.Rows[index];
t = selectedRow.Cells[2].Text;
}
}
<asp:GridView ID="grid1" runat="server" onselectedindexchanged="GridView1_SelectedIndexChanged" ...