Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 向gridview中的imageButton添加功能_C#_Asp.net - Fatal编程技术网

C# 向gridview中的imageButton添加功能

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

我有一个ImageButton控件作为GridView控件的一部分,该控件作为ItemTemplate显示在同一GridView中。我有一个常规的按钮控件,我在其中添加了如下代码

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" ...