如何使用c#ASP.NET中的GridView_RowCommand事件从GridView获取图像

时间:2015-06-28 11:32:57

标签: c# asp.net gridview

我正在使用c#ASP.NET.i进行GridView内部的编辑操作当用户点击编辑按钮时,所有数据将从该行中恢复并显示在文本框中但是在这里我无法显示图像。我在解释我的代码如下。

  

faq.aspx:

<div class="row">
    <div class="col-md-6">
        <label for="question" accesskey="T"><span class="required">*</span> Question</label>
        <asp:TextBox ID="TextBox1" runat="server"  size="30" value="" name="question" ></asp:TextBox>
        <div id="noty" style="display:none;" runat="server"></div>
        <label for="answer" accesskey="A"><span class="required">*</span> Answer</label>
        <asp:TextBox ID="TextBox2" runat="server"  size="30" value="" name="answer" ></asp:TextBox>
        <div id="Div1" style="display:none;" runat="server"></div>
    </div>
    <div class="col-md-6 bannerimagefile">
        <label for="insertimage" accesskey="B"><span class="required">*</span> Insert Image</label>
        <asp:FileUpload runat="server" class="filestyle" data-size="lg" name="insertimage" id="FileUpload1" onchange="previewFile()" />
        <label for="bannerimage" accesskey="V"><span class="required">*</span> View Image</label>
        <div style="padding-bottom:10px;">
            <asp:Image ID="Image3" runat="server" border="0" name="bannerimage" style="width:70px; height:70px;"   />
        </div>
        <div class="clear"></div>
        <asp:Button ID="Button1" runat="server" Text="Submit" class="submit" 
            onclick="Button1_Click" />
        </div>
</div>

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" Width="100%" CssClass="table table-striped table-bordered margin-top-zero" OnRowCommand="GridView1_RowCommand" >
    <Columns>
       <asp:TemplateField HeaderText="Sl No">
       <ItemTemplate>
       <asp:Label ID="faqid" runat="server" Text='<%#Eval("FAQ_ID") %>'></asp:Label>
       </ItemTemplate>
       </asp:TemplateField>
       <asp:TemplateField HeaderText="Question" >
       <ItemTemplate>
       <asp:Label ID="question" runat="server" Text='<%#Eval("Question") %>'></asp:Label>
       </ItemTemplate>
       </asp:TemplateField>
       <asp:TemplateField HeaderText="Answer" >
       <ItemTemplate>
       <asp:Label ID="answer" runat="server" Text='<%#Eval("Answer") %>'></asp:Label>
       </ItemTemplate>
       </asp:TemplateField>
       <asp:TemplateField HeaderText="Image" >
       <ItemTemplate>
       <asp:Image ID="Image1" runat="server" border="0" name="bannerimage" style="width:70px; height:70px;" ImageUrl='<%# "/Upload/" + Convert.ToString(Eval("Image")) %>'  /> 
       </ItemTemplate>
       </asp:TemplateField>
       <asp:TemplateField HeaderText="Action" >
       <ItemTemplate>
       <!--<a href="" data-toggle="tooltip" title="" class="btn btn-xs btn-success" data-original-title="Edit" id="editbtn" ><i class="fa fa-edit"></i></a>
       <a href=" " data-toggle="tooltip" title="" class="btn btn-xs btn-danger" data-original-title="Delete"><i class="fa fa-times"></i></a> -->
            <asp:HyperLink ID="HyperLink1" runat="server" data-toggle="tooltip" title="" class="btn btn-xs btn-success" data-original-title="Edit" CommandName="DoEdit" CommandArgument='<%# Eval("FAQ_ID") %>' ><i class="fa fa-edit"></i></asp:HyperLink>
             <asp:HyperLink ID="HyperLink2" runat="server" data-toggle="tooltip" title="" class="btn btn-xs btn-danger" data-original-title="Delete" CommandName="DoDelete" CommandArgument='<%# Eval("FAQ_ID") %>' ><i class="fa fa-times"></i></asp:HyperLink>
           </ItemTemplate>
       </asp:TemplateField>
    </Columns>
</asp:GridView>
  

faq.aspx.cs:

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    int faqID = int.Parse(e.CommandArgument.ToString());
    switch (e.CommandName)
    {
        case "doEdit":
            {
                int index = Convert.ToInt32(e.CommandArgument);
                TextBox1.Text = GridView1.Rows[index].Cells[1].Text;
                TextBox2.Text = GridView1.Rows[index].Cells[2].Text;
                HiddenField1.Value = GridView1.Rows[index].Cells[0].Text;
                Image3.ImageUrl=
                Button1.Text = "Update";
            }
    }
}

在这里,我需要将图片重新设置并设置为image3 id。请帮我解决此问题。

2 个答案:

答案 0 :(得分:0)

这是image3;它不在您的代码段中。请包括它,但如果它在网格中,那么你可以:

var img3 = (Image)GridView1.Rows[index].Cells[X].FindControl("Image3");
img3.ImageUrl = "XYZ";

直接引用仅在容器外部的页面上有效。如果在容器内部,您必须使用FindControl(例如detailsview.findcontrol)或者如果是可重复列表,则必须使用行中的FindControl(或者对于网格,单元格)。

答案 1 :(得分:0)

获取这样的行索引:

 GridViewRow gvr = (GridViewRow)(((HyperLink)e.CommandSource).NamingContainer);

    int index= gvr.RowIndex; 

//获取图片网址

 string url =  ((Image)gvr.FindControl("Image3")).ImageUrl;    
    Image3.ImageUrl= url;