คำถามสุดท้ายของโปรเจคนี้แล้วรบกวนผู้รู้ทุกท่านครับ รับส่งข้อมูลเพื่อเรียกใช้งาน
Code (C#)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;
using Microsoft.Reporting.WebForms;
using System.Text;
using System.IO;
using System.Web.Configuration;
using PdfSharp.Drawing;
using PdfSharp.Pdf;
using System.Globalization;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
string SQL = "SELECT tb_COURSE.fl_coursename, tb_STAFF.fl_empid, tb_STAFF.fl_name, tb_TRAIN.fl_result, tb_TRAIN.fl_startdate, tb_TRAIN.fl_enddate, tb_TRAIN.fl_day, tb_TRAIN.fl_hour FROM tb_TRAIN LEFT JOIN tb_STAFF ON tb_TRAIN.fl_empid = tb_STAFF.fl_empid LEFT JOIN tb_COURSE ON tb_TRAIN.fl_courseid = tb_COURSE.fl_courseid WHERE tb_TRAIN.fl_empid = '" + TextBox1.Text + "'";
SqlConnection Conn = new SqlConnection(ConfigurationManager.ConnectionStrings["dbConn"].ConnectionString);
SqlCommand command = new SqlCommand();
Conn.Open();
SqlDataReader rs = null;
SqlDataAdapter dtapter = new SqlDataAdapter(SQL, Conn);
command.CommandText = SQL;
command.Connection = Conn;
rs = command.ExecuteReader();
LocalReport rpt = new LocalReport();
DataTable dt = new DataTable();
rpt.ReportPath = "Report.rdlc";
rpt.EnableExternalImages = true;
rpt.EnableHyperlinks = true;
rpt.DataSources.Clear();
rpt.Refresh();
dt.Columns.Add("coursename");
dt.Columns.Add("empid");
dt.Columns.Add("name");
dt.Columns.Add("result");
dt.Columns.Add("updater");
dt.Columns.Add("update");
dt.Columns.Add("day");
DataRow dr = dt.NewRow();
while (rs.Read())
{
dr = dt.NewRow();
dr["coursename"] = rs["fl_coursename"].ToString();
dr["empid"] = rs["fl_empid"].ToString();
dr["name"] = rs["fl_name"].ToString();
dr["result"] = rs["fl_result"].ToString();
dr["updater"] = String.Format("{0}/{1}/{2}", rs["fl_startdate"].ToString().Substring(6, 2), rs["fl_startdate"].ToString().Substring(4, 2), Convert.ToInt32(rs["fl_startdate"].ToString().Substring(0, 4)) + 543);
dr["update"] = String.Format("{0}/{1}/{2}", rs["fl_enddate"].ToString().Substring(6, 2), rs["fl_enddate"].ToString().Substring(4, 2), Convert.ToInt32(rs["fl_enddate"].ToString().Substring(0, 4)) + 543);
dr["day"] = rs["fl_day"].ToString() + " วัน " + rs["fl_hour"].ToString() + " ชั่วโมง " ;
dt.Rows.Add(dr);
}
rs.Close();
rs = null;
Conn.Close();
rpt.DataSources.Add(new ReportDataSource("DataSet1", dt));
rpt.Refresh();
string reportType = "PDF";
string mimeType = "";// "application/pdf";
string encoding;
string fileNameExtension;
//Setup size Page//
string deviceInfo = "<DeviceInfo>" +
" <OutputFormat>PDF</OutputFormat>" +
" <PageWidth>8.5in</PageWidth>" +
" <PageHeight>12in</PageHeight>" +
" <MarginTop>0.1in</MarginTop>" +
" <MarginLeft>0.1in</MarginLeft>" +
" <MarginRight>0.1in</MarginRight>" +
" <MarginBottom>0.1in</MarginBottom>" +
"</DeviceInfo>";
Warning[] warnings;
string[] streams;
byte[] renderedBytes;
//Render report//
renderedBytes = rpt.Render(reportType, deviceInfo, out mimeType, out encoding, out fileNameExtension, out streams, out warnings);
Response.Buffer = true;
Response.Clear();
Response.ContentType = mimeType;
Response.AddHeader("content-disposition", "attachment; filename= " + TextBox1.Text + "." + fileNameExtension);
Response.OutputStream.Write(renderedBytes, 0, renderedBytes.Length);
Response.End();
}
}
จากโค้ดข้างต้นผมได้รับงานมาให้เขียนคนละส่วนเพื่อนำมารวมใช้ในเว็บแอฟเดียวกัน ส่วนของผมเสจแล้วผม report เป็น PDF โดยทำ text และ buttom มาใช้เรียก empid เพื่อเเสดงข้อมูล เเต่ว่า ผมต้องเอา textbox และ ปุ่มออก เพื่อให้โค้ดส่วนอื่นเป็นคนเรียกใช้ อยากทราบว่า ผมต้องรับส่งข้อมูลด้วยวิธีไหนบ้างครับที่ทำให้ สมมุติว่า โค้ดส่วนที่เรียกใช้ เรียกไอดี 00001 ของ empid จะทำไงให้ส่วนของผมรู้ว่าต้องเอา 00001 ออกมาครับ รบกวนชี้เเนะด้วยครับ
Code (C#)
string SQL = "SELECT tb_COURSE.fl_coursename, tb_STAFF.fl_empid, tb_STAFF.fl_name, tb_TRAIN.fl_result, tb_TRAIN.fl_startdate, tb_TRAIN.fl_enddate, tb_TRAIN.fl_day, tb_TRAIN.fl_hour FROM tb_TRAIN LEFT JOIN tb_STAFF ON tb_TRAIN.fl_empid = tb_STAFF.fl_empid LEFT JOIN tb_COURSE ON tb_TRAIN.fl_courseid = tb_COURSE.fl_courseid WHERE tb_TRAIN.fl_empid = '" + TextBox1.Text + "'";
ต้องลบ text ออกหมดเลย
Code (C#)
Response.AddHeader("content-disposition", "attachment; filename= " + TextBox1.Text + "." + fileNameExtension);
Tag : .NET, Ms SQL Server 2008, Web (ASP.NET), C#
Date :
2016-01-26 16:56:23
By :
witthawas01
View :
870
Reply :
7
ดันๆๆๆๆๆๆ
Date :
2016-01-27 08:58:43
By :
witthawas01
งง ๆๆๆๆ
ทำ text และ buttom มาใช้เรียก empid เพื่อเเสดงข้อมูล เเต่ว่า ผมต้องเอา textbox และ ปุ่มออก เพื่อให้โค้ดส่วนอื่นเป็นคนเรียกใช้
ปัญหาคืออะไรนะครับ
Date :
2016-01-27 09:27:57
By :
lamaka.tor
ปัญหาคือ ผมต้องทำตัวรับส่งค่า เพื่อให้คนอื่นเรียกใช้
เเต่ตอนผมเทสผมจะมี text ไว้รับค่า empid เเต่ถ้านำออกผมจะส่ง รับค่ายังไงครับ
แล้วส่งค่าแบบ GET คืออะไรครับ คนเเนะนำเค้าบอกแบบคลุมเครือ
Date :
2016-01-27 09:40:01
By :
witthawas01
เอาง่ายๆนะครับ ถ้าผมเขาใจไม่ผิด คุณมี page อยู่ 2 หน้าและหน้า A ต้องการส่งรหัสให้ หน้า B
และตัวคุณทำหน้า B และตอนทดลองคุณก็ทำ Text และ ฺButton เพื่อทดสอบ
และเมื่อมันผ่านคุณก็อยากให้หน้า A ส่งมาเฉพาะรหัสแต่คุณไม่รู้ว่าจะทำอย่างไร
ถ้าใช้คุณสอบตกเรื่องเขียนเว็ปแล้วล่ะ ถ้าไม่ใช่ผมก็ขอโทษด้วยนะครับ
แนวทางนะครับ
หน้า A เวลาส่งรหัสไปเขาเลือกว่า post ไป B
หน้า B เข้าเลือกว่า get แต่การใช้ จะเป็น string _id = Request["id"];
ผมไม่ได้เขียน asp.net แต่ผมเขียน php เลยไม่รู้แน่ชัดว่าการส่งค่ารับค่าของ asp.net เป็นอย่างไง
ถ้าอย่างไงผมอธิบายไม่ถูกก็ขอโทษด้วยนะครับ
Date :
2016-01-27 09:56:58
By :
บัญดิษฐ
ประมานนั้นครับ ผมก้พึ่งได้สัมผัสเรื่องนี้เหมือนกันได้งานมาแบบนี้ครับ
คือเเต่ละคนทำคนละส่วน ผมเเค่ไม่เข้าใจว่าส่วนที่เรียกใช้งานเค้าจะเรียกใช้งานส่วนของผมยังไง
เพราะต้องให้หาตามรหัสพนักงาน
ผมต้องมีตัวแปรมาเก็บ empid ใช่ไหมครับ ไม่เข้าใจจิงครับ Syntax ต้องเป็นยังไง
Date :
2016-01-27 10:09:59
By :
witthawas01
ถ้าจะกรุณา แปลไทยเป็นไทยให้เข้าใจ คือผมมือใหม่เรื่องนี้จิงๆครับ ลุกพี่ที่สั่งงานบอกเเค่ว่า
แปะค่า get ใน url
ใน c# ก็ต้องเปลี่ยนตัวทำเงื่อนไข
Date :
2016-01-27 13:46:58
By :
witthawas01
ไม่รู้ว่าได้หรือยังนะครับ
คุณก็แก้ไข Code โดยเขียน Function ใหม่แค่นั้นเอง
ถ้าเขาส่งมาแบบนี้
http://เว็ปคุณ/page ของคุณ?empid=00001
หน้าของคุณก็ต้องเป็นแบบนี้เด้อ
Code (C#)
protected void Page_Load(object sender, EventArgs e)
{
if (Request.Headers["IsLookup"] != null)
{
// Get the name part of the message sent.
string empidStr = Request.Form["empid"];
FillEmp(empidStr );
}
}
private void FillEmp(string empid)
{
//เอาโค้ดของ Button1_Click มาใสในนี้ เข้าใจบ่ ข่อยปวดหัวแร้วเด้อ
string SQL = "SELECT tb_COURSE.fl_coursename, tb_STAFF.fl_empid, tb_STAFF.fl_name, tb_TRAIN.fl_result, tb_TRAIN.fl_startdate, tb_TRAIN.fl_enddate, tb_TRAIN.fl_day, tb_TRAIN.fl_hour FROM tb_TRAIN LEFT JOIN tb_STAFF ON tb_TRAIN.fl_empid = tb_STAFF.fl_empid LEFT JOIN tb_COURSE ON tb_TRAIN.fl_courseid = tb_COURSE.fl_courseid WHERE tb_TRAIN.fl_empid = '" + empid + "'";
}
ถ้าไม่ถูกต้องอย่างไงก็ขอโทษด้วยครับผม
Date :
2016-01-27 16:23:19
By :
บัญดิษฐ
Load balance : Server 02