动态添加图像按钮到gridview数据绑定

时间:2011-08-03 12:49:03

标签: c# .net asp.net visual-studio gridview

我正在显示一个gridview,它应该显示一个包含图像按钮的列。

My Quesiton:我如何动态地将图像按钮添加到gridview行?

我不想通过使用gridview的设计字段中的模板字段来输入。由于这是图像按钮,我应该能够捕获相同的事件。如何做同样的事情?

请指导我!

由于

3 个答案:

答案 0 :(得分:1)

点击此链接,它可能对您有帮助。

http://forums.asp.net/t/1169201.aspx/1

答案 1 :(得分:1)

我认为你可以在.aspx文件中添加图像到你的编辑和删除按钮,我只是尝试并得到它.. 1.首先制作gridview,然后添加OnRowEditing="GridView1_RowEditing" OnRowDeleting="GridView1_RowDeleting"

等活动

我告诉您如何添加图像以编辑和删除“更新”和“取消”按钮,您可以以相同的方式继续...

现在转到gridview的来源..

你会看到这样的代码

 <asp:CommandField ShowEditButton="True"/>
 <asp:CommandField ShowDeleteButton="True"/>

之后改变了一些事情,比如添加

 <asp:CommandField ShowEditButton="True" ButtonType="Image" EditImageUrl="~/uploads/edit.png" />
 <asp:CommandField ShowDeleteButton="True" ButtonType="Image" DeleteImageUrl="~/uploads/delete.png" />

然后确保仅以45 * 25尺寸保存图像,并将其保存在任何文件夹中,并记住指定我在此处所做的路径,我的文件夹是上传的。

注意:不要将图像存储在App_data中,它用于存储.mdf数据库文件,任何图像都不适合你..如果添加图像时图像没有显示在下拉列表中,请尝试物理添加其路径

答案 2 :(得分:0)

我认为您可以使用模板字段。你需要做的是在GridView RowDataBound事件中找到你在模板字段中添加的ImageButton,然后给出一个ID或行号或者你可以用来识别ImageButton所在的行,作为ImageButton的属性。

您可以使用此地点为ImageUrl提供样本,如下所示。

 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            ImageButton imgbtn = (ImageButton)e.Row.FindControl("imgbtn1");
            if (imgbtn != null)
            {
                imgbtn.Attributes["id"] = e.Row.RowIndex.ToString();
            }

        }
    }

然后您可以为ImageButton创建click事件。在那里你可以得到被点击的图像按钮的id / rowindex并按你想要的去做。活动可能如下所示

 protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
    {
        ImageButton btn = (ImageButton)sender;
        string rowindex = btn.Attributes["id"];

    }

然后在GridView模板字段中,您可以将Click事件添加到ImageButtons onClick事件。这可能如下所示

<asp:TemplateField HeaderText="Image">
                <ItemTemplate>
                    <asp:ImageButton  runat ="server" ID="imgbtn1"  onclick="ImageButton1_Click"/>
                </ItemTemplate>
            </asp:TemplateField>