none
LinkButton 弹出含有指定图片的窗口的问题 RRS feed

  • 问题

  • 参数CID、 SumbitNumber 存在于SQL数据库中ContractTable中,CID是自增量为1的主键, SumbitNumber是送审单的编号,在文件夹"~/Pictures/SumbitNumberPic/“中有以SumbitNumber命名的JPG文件,例如:SumbitNumber为HS2015001,则有HS2015001.jpg的图片 。  

      在gridView中把SumbitNumber改成LinkButton形式,点击就能弹出相应的图片。

        下面我的代码中,已经可以Response出SumbitNumber相应图片的位置了,但最后仍然无法点击弹出相应图片只有如图所示的错误。不

    知如何是好,请各位帮忙看看,谢谢。

    ==========================图片=========================

    =========================前台代码=======================

    <asp:TemplateField HeaderText="送审单111" SortExpression="送审单">
                                    <ItemTemplate>
                                        <asp:LinkButton ID="LinkButton1" runat="server" Text='<%# Eval("送审单") %>' 
                                             CommandName="SongShenDan">点击</asp:LinkButton>
                                        
                                        <%--<asp:HyperLink ID="HyperLink1" runat="server"  Text='<%# Eval("送审单") %>' 
                                             CommandName="SongShenDan">HyperLink</asp:HyperLink>--%>
                                        
                                    </ItemTemplate>
    </asp:TemplateField>

    ==============================后台代码================================

       protected void GridView_ContractTable_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "SongShenDan")
            { 
                GridViewRow drv = (GridViewRow)((LinkButton)e.CommandSource).NamingContainer;//此得出的值是表示那行被选中的索引值
                int id = Convert.ToInt32(GridView_ContractTable.Rows[drv.RowIndex].Cells[0].Text);   //此获取的值为GridView中绑定数据库中的主键值,取值方法是选中的行中的第一列的值,drv.RowIndex取得是选中行的索引
                string strid = id.ToString();
                //Response.Write(id);
                string strconn = "Data Source=.;Initial Catalog=长铁物业公司资产数据库;Integrated Security=True";
                SqlConnection cn = new SqlConnection(strconn);
                cn.Open();
                string SumbitPictureUrl = "";
                SumbitPictureUrl = "select  SumbitNumber from ContractTable where CID='" + strid + "'";
                SqlCommand cm = new SqlCommand(SumbitPictureUrl, cn);
                SqlDataReader dr = cm.ExecuteReader();
                dr.Read();
                string strSumbitNumber = dr["SumbitNumber"].ToString();
                //if (dr.Read())
                //{
                //Response.Write(strSumbitNumber);
                string a1 = "~/Pictures/SumbitNumberPic/" + strSumbitNumber+ ".jpg";
                Response.Write(a1);
                    //string spUrl = str2;
                ((LinkButton)this.GridView_ContractTable.FindControl("LinkButton1")).PostBackUrl = a1;
                //((LinkButton)this.GridView_ContractTable.FindControl("LinkButton1")).PostBackUrl = "~/indexnull.htm";
                
                
                //}
                //else
                //{ ((HyperLink)this.FormView1.FindControl("HyperLink_SumbitNumberPic")).NavigateUrl = "~/indexnull.htm"; }
                cn.Close();
            }
        }



    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。


    2015年3月4日 8:43

答案

  • 这样解决了,谢谢!

    string a1 = this.Page.ResolveUrl("~/Pictures/SumbitNumberPic/" + strSumbitNumber + ".jpg");
    var scp = string.Format("window.open('{0}')", a1);
    ScriptManager.RegisterStartupScript(this, this.GetType(), "打开图片", scp, true);


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。

    2015年3月10日 2:59

全部回复

  • 你好,

    根据你的错误信息,是你并未找到对应的LinkButton 控件。

    请尝试使用

    LinkButton link=(LinkButton)drv.FindControl("LinkButton1");
    
    link.PostBackUrl=a1;
    

    2015年3月5日 8:20
  • 这样解决了,谢谢!

    string a1 = this.Page.ResolveUrl("~/Pictures/SumbitNumberPic/" + strSumbitNumber + ".jpg");
    var scp = string.Format("window.open('{0}')", a1);
    ScriptManager.RegisterStartupScript(this, this.GetType(), "打开图片", scp, true);


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。

    2015年3月10日 2:59