Showing posts with label Web App. Show all posts
Showing posts with label Web App. Show all posts

Thursday, October 11, 2012

วิธีใช้ Crystal Report ใน ASP.Net

วิธีใช้ Crystal Report ใน ASP.Net

ใน Window App. ใช้ Crystal Report นั้นไม่ยาก
แต่ ใน Web App. ใช้ Crystal Report แล้วแต่ข้อมูลไม่ออกมาให้เห็น
จึงได้ทดลองค้นหาวิธีทำตั้งนานหลายชั่วโมง
จนกระทั่งทำได้สำเร็จได้ผลตามต้องการ
แต่นี่ยังไม่ใช่วิธีที่ดีที่สุด ก็ต้องทดลองใช้ดูแล้วค่อย ๆ พัฒนาหาวิธีการที่ดีกว่านี้
ในเบื้องต้นจะเอาตัวอย่างเท่าที่ทำได้ผลแล้วมาแสดงให้เห็นก่อนดังนี้
1.สร้าง Dataset ขึ้นมาสมมุติขื่อ Dataset1.xsd ในนี้มี DataTable ชื่อ DataTable1
2.สร้าง Crystal Report สมมุติชื่อ CR1.rpt
           - DataBase Expert > Project Data > ADO.NET Dataset > Dataset1
           - ทำตามขั้นตอนการสร้าง Crystal Report ทั่ว ๆ ไป
3.ใน Code-Behind เขียนคำสั่งดังนี้

Imports CrystalDecisions.Shared
Imports CrystalDecisions.CrystalReports.Engine
Imports System.Data.SqlClient

Partial Class DailyMeterList
 Inherits System.Web.UI.Page

 Dim R1 As New ReportDocument

 Protected Sub btnPreview_Click ...

  Dim xFile As String = Server.MapPath("CR1.rpt")
  R1.Load(xFile, OpenReportMethod.OpenReportByDefault)

  Dim objConn As New SqlConnection(YourConnectString)  
  Dim DA As SqlDataAdapter
  Dim ds As New DataSet
  Dim dt As DataTable
  Dim strCmd As String
  strCmd = "SELECT * FROM WorkTable  " 
  objConn.Open()
  DA = New SqlDataAdapter(strCmd, objConn)
  DA.Fill(ds, "DataTable1")
  dt = ds.Tables("DataTable1")

  R1.Database.Tables(0).SetDataSource(ds.Tables(0))
  V1.ReportSource = R1

 End Sub
End Class

'แต่เกิดปัญหาว่าเวลากด Next เพื่อดูหน้าต่อไปปรากฎว่า
'รายงานไม่แสดงผลเลยจึงแก้ด้วย Code ดังนี้

  Protected Sub Page_Load ...
  If Page.IsPostBack Then
     btnPreview_Click(sender, e)
  End If
 End Sub

Friday, September 21, 2012

กดปุ่มแล้วให้ไปแสดงผลใน Windows ใหม่

สมมุติว่าเดิมเป็น

 &lt asp:Button ID="button1" runat="server" Text="<- See detail" Width="96px" / &gt

เพิ่มโค้ดนี้ OnClientClick="aspnetForm.target ='_blank'" เข้าไปเป็น
 &lt asp:Button ID="button1" runat="server" Text="<- See detail" Width="96px" OnClientClick="aspnetForm.target ='_blank'" / &gt

วิธีส่งค่าตัวแปรผ่านไปยัง Web Form อื่น ใน ASP.Net

วิธีส่งค่าตัวแปรผ่านไปยัง Web Form อื่น ใน ASP.Net มีหลายวิธีแต่ขอใช้วิธี Session ดังนี้
Source Web Form
 Session("name1") = value1
 Session("name2") = value2
 Server.Transfer("DestinationWebForm.aspx")

Destination Web Form
 var1 = Session("name1").ToString
 var2 = Session("name2").ToString
 Session.Remove("name1")
 Session.Remove("name2")

Tuesday, June 12, 2012

Asp.net Dynamic Menu มีปัญหาไม่แสดงผลเมื่อเปิดด้วย IE8

ปัญหา

Asp.net Dynamic Menu เมื่อเปิดด้วย Browser อื่น ๆ เช่น FireFox เมื่อใช้เม้าส์ที่เมนูแม่ Level 1 จะปรากฏเมนูลูก Level 2 ให้เห็นแต่ถ้าเปิดด้วย IE8 จะไม่ปรากฏเมนูลูกตั้งแต่ Level 2 ให้เห็นเลย

สาเหตุ

เป็น Bug ของ IE8

วิธีแก้ไข

ใส่โค้ดนี้ใน Head Tag เหนือ Title

 <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />

Monday, May 21, 2012

Gridview Data Formatting in ASP.net ไม่ทำงานถ้าไม่มีคำสั่ง HtmlEncode="false"

ปัญหาคือกำหนดรูปแบบของแต่ละคอลัมน์ใน Gridview Task > Edit Column แล้วทดสอบรันในเครื่องคอมตัวเองรันได้แสดงผลในรูปแบบที่เราต้องการ จึง Upload Code ขึ้น Server เสร็จแล้วลองทดสอบรันปรากฏว่าแสดงผลออกมาดิบ ๆ เหมือนไม่มีการรันคำสั่งหรือรูปแบบที่เรากำหนดไว้เลย ทดสอบหลายครั้งก็เหมือนเดิม
ทั้ง ๆ ที่ในช่อง HtmlEncode ก็เลือก False แล้ว
  

จึงลองถามพี่กูเกิลแล้วไปดูใน Source แล้วไม่พบคำสั่ง HtmlEncode = "False" เลยจึงเข้าไปเพิ่มคำสั่งนี้ลงใน ASP.net Source ดังตัวอย่างคอลัมน์ DATE นี้

<asp:BoundField DataField="DATE" HeaderText="Date" DataFormatString="{0:dd/MM/yyyy}" 
HtmlEncode="False"
ReadOnly="True" >
<ItemStyle HorizontalAlign="Center" />

Thursday, May 10, 2012

เขียน Web App, Web Service เสร็จแล้วจะเอาขึ้น Server ยังไง

1.Copy ทั้ง Folder นั้นไปไว้ใน Server C:/Inetpub/ชื่อโฟลเดอร์
   สมมุติว่าเป็น C:/Inetpub/energy/
2.คลิกขวาที่ Folder: energy > Properties > Web Sharing
3.เลือก Share this folder

4.ช่อง Alias: ใส่ชื่อที่ต้องการ อาจเหมือนหรือต่างจากชื่อของ Folder ก็ได้ ชื่อนี้เป็นส่วนหนึ่งของ Path ที่ใช้เรียก URL ปลายทางเช่น http://xxx/energy/
5.เข้าโปรแกรม Internet Information Services ( IIS ) Manager
6.เลือก Folder ของเราที่สร้างชื้นมาใหม่ข้างต้นคือ energy คลิกขวาเลือก Properties
7.เลือก Directory Security

8.Autentication and access control > Edit
9.เลือก Enable anonymous access

10.OK
--------------------------------------
การเรียกใช้ WebService
1.Solution Explorer
2.คลิกขวา Add Web Reference
3.ช่อง URL ใส่ http://yourURL/yourPath/Service.asmx
4.กด Go
5.ตั้งชื่อ Web Reference Name
6.กดปุ่ม Add Reference
7.เวลาเรียกใช้ในโปรแกรม ก็ อ้างถึงเช่น

Dim rWebservice As New yourWebReference.Service

แล้วก็สามารถเรียกใช้ Function ผ่าน Instance rWebservice.yourWebMedthod ต่าง ๆ ได้ตามต้องการ