2010-10-22 2 views
0

J'utilise C#. Net et SQL Server 2005.Afficher les données par numéro de réclamation sur la page de la grille

Je télécharge des fichiers (Word, PDF) dans la base de données, et affiche sur la page en utilisant la grille.

J'ai différents numéros de demandes, comme co50000006 (comme 10 lignes). Je veux dire que le numéro de réclamation a différents fichiers. J'ai d'autres numéros de réclamation sur ma table. (comme c08000131, c01000001).

Je souhaite afficher uniquement une ligne de numéro de revendication sur la grille. Je veux dire quel que soit le numéro de mon émission de requête, je veux afficher le numéro de réclamation particulier sur ma grille (Request.QueryString["ClaimNum"];).

S'il vous plaît aidez-moi avec ceci.

Je reçois claimnumber sur la table de mon en-tête de page et j'insère cette valeur dans la table.

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> 

J'utilise une requête SQL ici:

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

Voici le mon code total à l'aide de upload.aspx.cs de fichiers.

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 [email protected]"; 
     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 
    } 
} 

Répondre

0

Avez-vous envisagé

SelectCommand="SELECT [ID], [ClaimNumber], [LoadDate], [Description], [ContentType], [Data] FROM [tblFiles] where [ClaimNumber] = " Request.QueryString["ClaimNum"]>