Отображение данных по номерам заявок на странице просмотра сетки - PullRequest
0 голосов
/ 22 октября 2010

Я использую C #. Net и SQL Server 2005.

Я загружаю файлы (Word, PDF) в базу данных и отображаю на странице в виде сетки.

У меня разные номера претензий, например co50000006 (например, 10 строк). Я имею в виду, что номер претензии имеет разные файлы. У меня есть другие номера претензий на моей таблице. (например, c08000131, c01000001).

Я хочу отображать только одну строку с номером заявки на сетке. Я имею в виду, что любое число, которое показывает моя строка запроса, я хочу отобразить конкретный номер претензии в моей сетке. (Request.QueryString["ClaimNum"];).

Пожалуйста, помогите мне с этим.

Я получаю номер заявки в таблице в заголовке моей страницы и вставляю это значение в таблицу.

protected void Page_Load(object sender, EventArgs e)
{
        //Showing Claim Number on file upload.
        lblFileUploadCliamNumber.Text = Request.QueryString["ClaimNum"];
}

<asp:GridView ID="GridView1" runat="server" 
              AutoGenerateColumns="False" DataKeyNames="ID"
              DataSourceID="SqlDataSource1" AllowPaging="True">
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID" 
                InsertVisible="False" ReadOnly="True"
                               SortExpression="ID" />

 <asp:BoundField DataField="ClaimNumber" HeaderText="Claim Number" 
                               SortExpression="ClaimNumber" />

     <asp:TemplateField HeaderText="Load Date">
     <ItemTemplate>
     <asp:Label runat="server" ID="LoadDate"
     Text='<%# String.Format("{0:M/d/yyyy}", Eval("LoadDate"))  %>' />
     </ItemTemplate>
     </asp:TemplateField>                         

<asp:BoundField DataField="Description" HeaderText="Description" 
                               SortExpression="Description" />
 <asp:BoundField DataField="ContentType" HeaderText="ContentType" 
                               SortExpression="ContentType" />                               

 <asp:TemplateField HeaderText="Data">
<ItemTemplate>
   <%--<asp:Image ID="Image1" runat="server" 
           ImageUrl='<%# "FileUploadHandler.ashx?ID=" + Eval("ID")%>'/>--%>                       
 <asp:LinkButton ID="LinkButton1" runat="server" OnClick = "Retreive_Doc">Download</asp:LinkButton>     
</ItemTemplate>
</asp:TemplateField> 
</Columns>
</asp:GridView>

Я использую SQL-запрос здесь:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
ConnectionString="<%$ AppSettings:connString %>"
SelectCommand="SELECT [ID], [ClaimNumber], [LoadDate], [Description], [ContentType], [Data] 
  FROM [tblFiles]"></asp:SqlDataSource>

Ниже приведен мой общий код, который используется в файле upload.aspx.cs.

public partial class FileUpload : System.Web.UI.Page
{

    private string redirectFrom = "FileUpload";


    protected void Page_Load(object sender, EventArgs e)
    {
        //Showing Claim Number on file upload.
        lblFileUploadCliamNumber.Text = Request.QueryString["ClaimNum"];

    }
    protected void Page_Init(object sender, EventArgs e)
    {

        WireEvents();

    }

    private void WireEvents()
    {

       btnFileUploadClose.Click += new EventHandler(btnFileUploadClose_Click);



    }

    private void btnFileUploadClose_Click(object sender, EventArgs e)
    {
        ReturnToClaimInfo();
    }


    private void ReturnToClaimInfo()
    {

        Response.Redirect(String.Format("/ClaimInfoView.aspx?ClaimNum={0}&ClaimCertSeqNo={1}&ClaimCovNum={2}&RedirectedFrom={3}"
                                           , Request.QueryString["ClaimNum"]
                                           , Request.QueryString["ClaimCertSeqNo"]
                                           , Request.QueryString["ClaimCovNum"]
                                           , redirectFrom));
    }








    /// Different file types start


    protected void btnUpload_Click(object sender, EventArgs e)
    {


        // Read the file and convert it to Byte Array
        string strClaimNumber = lblFileUploadCliamNumber.Text.ToUpper();
        string strDate = DateTime.Now.ToShortDateString();

        string strDescription = txtDescription.Text.ToString();
        string filePath = FileUpload1.PostedFile.FileName;
        string filename = Path.GetFileName(filePath);
        string ext = Path.GetExtension(filename);
        string contenttype = String.Empty;

        //Set the contenttype based on File Extension

        switch (ext)
        {
            case ".doc":
                contenttype = "application/vnd.ms-word";
                break;
            case ".docx":
                contenttype = "application/vnd.ms-word";
                break;
            case ".xls":
                contenttype = "application/vnd.ms-excel";
                break;
            case ".xlsx":
                contenttype = "application/vnd.ms-excel";
                break;
            case ".jpg":
                contenttype = "image/jpg";
                break;
            case ".png":
                contenttype = "image/png";
                break;
            case ".gif":
                contenttype = "image/gif";
                break;
            case ".pdf":
                contenttype = "application/pdf";
                break;

        }

        if (contenttype != String.Empty)
        {


            Stream fs = FileUpload1.PostedFile.InputStream;
            BinaryReader br = new BinaryReader(fs);
            Byte[] bytes = br.ReadBytes((Int32)fs.Length);


            //insert the file into database

            string strQuery = "insert into tblFiles(Name, ContentType, Data, Description, ClaimNumber, LoadDate)" +
               " values (@Name, @ContentType, @Data, @Description, @ClaimNumber, @LoadDate)";
            SqlCommand cmd = new SqlCommand(strQuery);
            cmd.Parameters.Add("@Name", SqlDbType.VarChar).Value = filename;
            cmd.Parameters.Add("@ContentType", SqlDbType.VarChar).Value
              = contenttype;
            cmd.Parameters.Add("@Data", SqlDbType.Binary).Value = bytes;
            cmd.Parameters.Add("@Description", SqlDbType.VarChar).Value = strDescription.ToString();
            cmd.Parameters.Add("@ClaimNumber", SqlDbType.NVarChar).Value = strClaimNumber.ToUpper();
            cmd.Parameters.Add("@LoadDate", SqlDbType.DateTime).Value = strDate.ToString();
            InsertUpdateData(cmd);
            lblMessage.ForeColor = System.Drawing.Color.Green;
            lblMessage.Text = "File Uploaded Successfully";
            if (lblMessage.Text == "File Uploaded Successfully")
            {
                txtDescription.Text = string.Empty;
            }
            //if(FileUpload1 != null)
            //{
            //    lblMessage.Text = string.Empty;
            //}
            GridView1.DataBind();
        }

        else
        {

            lblMessage.ForeColor = System.Drawing.Color.Red;
            lblMessage.Text = "File format not recognised." +
              " Upload Word/PDF/Excel formats";

        }

    }


    private Boolean InsertUpdateData(SqlCommand cmd)
    {
        String strConnString = System.Configuration.ConfigurationManager
        .AppSettings["connString"];
        SqlConnection con = new SqlConnection(strConnString);
        cmd.CommandType = CommandType.Text;
        cmd.Connection = con;
        try
        {

            con.Open();
            cmd.ExecuteNonQuery();
            return true;

        }

        catch (Exception ex)
        {
            Response.Write(ex.Message);
            return false;

        }

        finally
        {
            con.Close();
            con.Dispose();
        }

    }


    //Retrieve doc
    protected void Retreive_Doc(object sender, EventArgs e)
    {
        string strQuery = "select Name, ContentType, Data from tblFiles where id=@id";
        SqlCommand cmd = new SqlCommand(strQuery);
        cmd.Parameters.Add("@id", SqlDbType.Int).Value = ((LinkButton) sender).CommandArgument;
        DataTable dt = GetData(cmd);
        if (dt != null)
        {

                download(dt);
        }
    }

    // Get data
    public DataTable GetData(SqlCommand cmd)
    {
        DataTable dt = new DataTable();
        String strConnString = System.Configuration.ConfigurationManager
        .AppSettings["connString"];
        SqlConnection con = new SqlConnection(strConnString);
        SqlDataAdapter sda = new SqlDataAdapter();
        cmd.CommandType = CommandType.Text;
        cmd.Connection = con;

        try
        {
            con.Open();
            sda.SelectCommand = cmd;
            sda.Fill(dt);
            return dt;
        }
        catch
        {
            return null;
        }
        finally
        {
            con.Close();
            sda.Dispose();
            con.Dispose();
        }
    }

    // download file
    public void download(DataTable dt)
    {
        Byte[] bytes = (Byte[])dt.Rows[0]["Data"];
        Response.Buffer = true;
        Response.Charset = "";
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.ContentType = dt.Rows[0]["ContentType"].ToString();
        Response.AddHeader("content-disposition", "attachment;filename="
            + dt.Rows[0]["Name"].ToString());
        Response.BinaryWrite(bytes);
        Response.Flush();
        Response.End();
    } 

    //end
  }
}

1 Ответ

0 голосов
/ 19 июля 2011

Рассматривали ли вы

SelectCommand="SELECT [ID], [ClaimNumber], [LoadDate], [Description], [ContentType], [Data] FROM [tblFiles] where [ClaimNumber] = " Request.QueryString["ClaimNum"]>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...