 |
|
[vb] กด row ใน Gridview แล้วขึ้นหน้า window ใหม่ e.Row.Style.Add(HtmlTextWriterStyle.Cursor, "pointer") |
|
 |
|
|
 |
 |
|
Code (VB.NET)
Protected Sub GridView1_RowDataBound(sender As Object, e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
e.Row.Style.Add(HtmlTextWriterStyle.Cursor, "pointer")
e.Row.Attributes.Add("onclick", "window.open('deleteuser.aspx')")
End If
End Sub
|
 |
 |
 |
 |
Date :
2010-06-29 21:39:03 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ได้แล้วค่ะ ขอบคุณมากค่ะ คล้ายๆ กับที่หามา แก้นิดหน่อย ขอบคุณมากค่ะ
แต่ว่า อยากให้ส่งค่าไปด้วย ทำยังไงหรอคะ??
สมมุติ แต่ละ row มีหมายเลขเอกสารไม่ซ้ำกัน แล้วพอกดเปิดหน้าใหม่ ให้แสดงหมายเลขเอกสารของบรรทัดที่กด
รบกวนด้วยนะคะ ขอบคุณล่วงหน้าค่ะ > <
|
 |
 |
 |
 |
Date :
2010-06-30 09:28:18 |
By :
akura |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|

Code (VB.NET)
Protected Sub GridView1_RowDataBound(sender As Object, e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
Dim URLWithParameter As String = "deleteuser.aspx?doc_no=" _
+ e.Row.Cells(#doc_no#).Text.Trim()
e.Row.Style.Add(HtmlTextWriterStyle.Cursor, "pointer")
e.Row.Attributes.Add("onclick", "window.open('" + URLWithParameter + "')")
End If
End Sub
'#doc_no# เปลี่ยนเป็น หมายเลข column ที่เป็นค่า document number ของคุณ เริ่มจาก 0 นะคะ
'จากนั้นไปรับค่าใน page deleteuser จาก querystring ค่ะ
|
 |
 |
 |
 |
Date :
2010-06-30 10:31:32 |
By :
blurEyes |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณค่ะ ขึ้นแล้วค่ะ
แต่ว่า (เหอๆ มีแต่อีกแล้ว > < ) ขึ้นแต่ค่าสุดท้ายของ row คะ
อย่างเช่น
ID Date
1 12-06
2 13-06
ก็ขึ้นแสดง 2 ค่ะ เพิ่มข้อมูล ก็ขึ้นอันล่าสุดค่ะ กำลังสงสัยว่า ต้องใช้ rowindex เข้าช่วยหรือเปล่าคะ??
คือลอง e.row(0).cells(0) ก็ไม่ได้ผลค่ะ (เริ่มรู้สึกว่าตัวเองเขียนมั่วเหลือเกิน =w=)
แต่พอลอง rowindex เข้าไป ก็ฟ้องเหมือนใช้ไม่ได้ เลยลองพยายามแปลงโค้ด เพิ่มโค้ดดู เหมือนจะจับจุดไม่ถูก =w=
เลยขอคำแนะนำค่ะ
ขอบคุณมากค่ะ >/\<
|
 |
 |
 |
 |
Date :
2010-06-30 10:53:45 |
By :
akura |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
สงสัยตรงไหนคะ แล้ว e.row(0).cells(0) มายังไงเอ่ย
ไม่ต้องระบุ row แล้วค่ะ ใน event RowDataBound แถวจะมาทีละแถวไม่ต้องอ้าง index
e.row คือแถวปัจจุบันแล้วค่ะ
รันเทสให้แล้วก้อรันได้ ค่าที่ดึงขึ้นมาถูกต้องค่ะ deleteuser.aspx?doc_no=XXXX" << ตามข้อมูล
ในแต่ละแถวเลย
|
 |
 |
 |
 |
Date :
2010-06-30 11:43:48 |
By :
blurEyes |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (VB.NET)
Protected Sub GridView4_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView4.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim URLWithParameter As String
URLWithParameter = "TEST.aspx?doc_no=" + e.Row.Cells(0).Text.Trim()
Session("URLWithParameter") = URLWithParameter
e.Row.Style.Add(HtmlTextWriterStyle.Cursor, "pointer")
e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='#ffdaa9';")
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='#fff';")
e.Row.Attributes.Add("onclick", "window.open('" & URLWithParameter & "')")
End If
End Sub
นี่เป็นโค้ดที่มาจาก Stupid gal แล้วทีนี้นู๋ก็ จับๆ วางๆ นิดหน่อย เป็นแบบนี้ (แต่คิดว่าไม่ต่างกันเท่าไหร่ เหอๆ)
Code (VB.NET)
If e.Row.RowType = DataControlRowType.DataRow Then
Dim URLWithParameter As String
URLWithParameter = e.Row.Cells(0).Text.Trim()
Session("URLWithParameter") = URLWithParameter
e.Row.Style.Add(HtmlTextWriterStyle.Cursor, "pointer")
e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='#ffdaa9';")
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='#fff';")
e.Row.Attributes.Add("onclick", "window.open('TEST.aspx')")
End If
แต่ว่า...ทั้งสองอัน ไม่ว่ายังไงก็ให้ผลเหมือนกันเดะคะ นู๋ cap มาให้คะ

นู๋เลือก E00101 พอกดแสดงหน้าต่อไป มันขึ้นว่า E00106 อะคะ เป็นเพราะอะไรหรอคะ??
ขอบคุณล่วงหน้าค่ะ > <
|
 |
 |
 |
 |
Date :
2010-06-30 11:58:27 |
By :
akura |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (VB.NET)
If e.Row.RowType = DataControlRowType.DataRow Then
Dim URLWithParameter As String
URLWithParameter = e.Row.Cells(0).Text.Trim()
Session("URLWithParameter") = URLWithParameter
e.Row.Style.Add(HtmlTextWriterStyle.Cursor, "pointer")
e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='#ffdaa9';")
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='#fff';")
e.Row.Attributes.Add("onclick", "window.open('TEST.aspx')")
End If
Session("URLWithParameter") = URLWithParameter << เอาไปทำรัยค่ะ เนี่ยผู้ต้องสงสัย
e.Row.Attributes.Add("onclick", "window.open('TEST.aspx')") << ก้อรันหน้าเดียว
อันนี้ code test นะคะลองเอาไปแทนที่แล้วก้อรันดู ให้สังเกตุ น่าจะเข้าใจค่ะ
Code (VB.NET)
If e.Row.RowType = DataControlRowType.DataRow Then
Dim URLWithParameter As String
URLWithParameter = "รันหน้านี้.ASPX?doc_d="e.Row.Cells(0).Text.Trim()
Session("URLWithParameter") = URLWithParameter
e.Row.Style.Add(HtmlTextWriterStyle.Cursor, "pointer")
e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='#ffdaa9';")
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='#fff';")
e.Row.Attributes.Add("onclick", "alert('" + URLWithParameter + "')")
End If
|
 |
 |
 |
 |
Date :
2010-06-30 12:07:07 |
By :
blurEyes |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เริ่มจะเข้าใจว่า เก็บค่าไว้ใน path ใช่มั้ยคะ?? เหมือนที่เก็บแบบ post หรือ get (ซักอัน นู๋จำไม่ได้ > <)
Session("URLWithParameter") = URLWithParameter
คือนู๋คิดว่า ในหน้าใหม่ที่เปิด จะให้แสดงค่าที่เก็บ(จากการกดบรรทัดของ GridView) ไว้ใน Label คะ
ก็เลยใช้ session แล้วในหน้าใหม่ที่เปิดนู๋ก็เขียนว่า
Label1.text = Session("URLWithParameter").tostring
หรือที่ไม่แสดงค่าตามที่กดบรรทัดของ GridView เป็นเพราะ session หรอคะ??
แล้วถ้าจะให้แสดงค่าใน label ทำได้หรือเปล่าคะ? แล้วใช้วิธีแนวไหนหรอคะ???
ขอบคุณค่ะ
ปล. อันที่นู๋เข้าใจนี่ เข้าใจถูกรึเปล่าคะ แฮะๆ
|
 |
 |
 |
 |
Date :
2010-06-30 13:57:47 |
By :
akura |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ค่ะไม่ได้ใช้ Session("URLWithParameter") ค่ะแบบ GET ค่ะ
ถ้าจะเก็บค่าจาก METHOD GET ก็ไปรับเอาจาก QUERY STRING ค่ะ
CODE ใน PAGE ที่ถูกเรียกมาจะประมาณนี้ค่ะ
Code (VB.NET)
Sub Page_Load(object sender, System.EventArgs e)
Dim Document_id As String = Request.QueryString("doc_id") '<< CASE SENSITIVE นะคะ ให้ระวังด้วย
End Sub
|
 |
 |
 |
 |
Date :
2010-06-30 14:14:13 |
By :
blurEyes |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ได้แล้วค่ะ ขอบคุณมากค่ะ
แต่สงสัยอย่างนึงค่ะ อย่างในตารางที่นู๋เก็บหมายเลขเอกสาร
นู๋ก็ให้แสดงแค่ หมายเลขเอกสาร, ชื่อผู้ส่ง, ชื่อผู้รับ, ชื่อเอกสาร
ถ้าสมมุตินู๋อยากให้ส่งค่าพวก ชื่อผู้ส่ง, ชื่อผู้รับ, ชื่อเอกสาร นู๋ก็แก้ cells(1),cells(2),cells(3)
ประมาณนี้ใช่มั้ยคะ?
หรือถ้านู๋อยากให้แสดงรายละเอียดอย่างอื่นด้วย นู๋นำค่าที่เก็บใน Document_id ในหน้าใหม่ที่เปิด
มาใช้ร่วมกับคำสั่ง SQL เพื่อเปิดดูรายละเอียดทั้งหมด ได้มั้ยคะ??
อย่างเช่นจะใช้ SELECT * FROM tblAbsent WHERE IDAbsent = Document_id แบบนี้ได้มั้ยคะ?
เพื่อให้แสดงข้อมูลอื่นๆ ได้ด้วย
แต่ยังไง ก็ขอบคุณมากๆ ค่ะ ได้ความรู้เพิ่มขึ้นเยอะเลยคะ ^^
อ่อ มีอีกคำถามค่ะ คือสงสัย เวลาเปิดเว็บหาโค้ดแนวๆ นี้ เจอคนใช้ rowindex บ่อย มันคือคำสั่งอะไร ไว้ทำอะไรหรอคะ??? (บางทีก็เจอ e.rowindex เหมือนกันค่ะ เหอๆ)
ตอบได้ไม่ได้ ไม่ซีเรียสค่ะ อยากรู้ไว้เป็นความรุ้เฉยๆ ค่ะ > <
|
 |
 |
 |
 |
Date :
2010-06-30 14:26:26 |
By :
akura |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อ๋อ ถ้าเป็นตัวเองจะใช้ codeless ค่ะ คือเพิ่ม template column ลงไปที่ grid
อาจจะดูไม่สวยเท่าไหร่ แต่ไม่ต้องมาเขียน code behind ค่ะ แบบนี้
Code (ASP)
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataSourceID="LinqDataSource1">
<Columns>
<asp:BoundField DataField="id" HeaderText="id" InsertVisible="False"
SortExpression="id" />
<asp:BoundField DataField="inv_no" HeaderText="inv_no"
SortExpression="inv_no" />
<asp:BoundField DataField="inv_date" HeaderText="inv_date"
SortExpression="inv_date" />
<asp:BoundField DataField="VALUE" HeaderText="VALUE" SortExpression="VALUE" />
<asp:TemplateField>
<ItemTemplate>
<input id="Button1" type="button" value="edit"
onclick = "windows.open('SOMEPAGE.ASPX?doc_id=<%# Eval("id") %>');" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
|
 |
 |
 |
 |
Date :
2010-06-30 15:06:36 |
By :
blurEyes |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อันนี้ลองแล้วติด GridView4.DataBind() อ่ะคะ
เลยหันไปใช้วิธีตามที่ตั้งกระทู้ถามแทน ไม่รู้ว่าจะแก้ยังไง แฮะๆ
|
 |
 |
 |
 |
Date :
2010-06-30 16:36:20 |
By :
akura |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อ๋อ เปลี่ยนเป็นชื่อฟิลด์ของคุณดิคะ ^^
onclick = "windows.open('SOMEPAGE.ASPX?doc_id=<%# Eval("doc_id") %>');"
|
 |
 |
 |
 |
Date :
2010-06-30 17:01:32 |
By :
blurEyes |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เปลี่ยนแล้ว ก็เป็นเหมือนเดิมเลยคะ error ที่เดิมเลย เหมือนเขาบอก ใช้ callback ไม่ได้
แต่ว่า ถ้านู๋ไม่ใช้ callback หรือก็ใช้ padding ที่แบ่งหน้า Gridview ไม่ได้อ่ะคะ T-T
รบกวนด้วยนะคะ T-T
ปล.แต่ว่า type autonumber เนี่ย เรียกใช้ใน sql ไม่ได้หรอคะ??
คือลอง SELECT * FROM tblAbsent WHERE IDAbsent='ค่า'
IDAbsent มีค่าเป็น autonumber คะ
|
 |
 |
 |
 |
Date :
2010-06-30 17:30:15 |
By :
akura |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เรายังไม่ได้ callback อะไรเลยนะคะ ^^
นี้แหละพยายามเลี่ยงตอบเรื่อง GRIDVIEW
เพราะถูกใช้มากที่สุด และประยุกต์ได้มากมาย
เรื่องเดียวกันเขียนได้เป็นสิบแบบ
แล้วอีกอย่างไม่ได้้ใช้ GRIDVIEW ของ .NET มาจะปีนึงแล้วค่ะ ^^
เขียนยาก ไม่สวย เทอะทะ สามเหตุผล
AUTOINC FIELD มีคุณสมบัติเหมือนกับ field ปกติใน query ค่ะ
แค่ระวัง syntax ให้ถูก data type ให้ตรงกัน ก้อ query ผ่านแล้วค่ะ
|
 |
 |
 |
 |
Date :
2010-06-30 18:12:54 |
By :
blurEyes |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แฮะๆ จริงๆ ก็แอบไม่ชอบใช้ GridView เหมือนกันคะ แต่ไม่รู้จะเอาอะไรมาแสดงข้อมูลทั้งหมดทุก rows แทน
เพราะทุกวันนี้ ไม่ว่าจะโค้ดตัวอย่างที่พี่ๆ ให้มา หรือหาที่ไหน ใครก็ใช้ GridView กัน เลยคิดว่า สงสัยคงต้องใช้ GridView (มั้ง)
เพราะการทำงานของตรงนี้ คล้ายกับเมล ที่คลิกแต่ละ rows แล้วแสดงข้อมูลรายละเอียดทั้งหมดที่เก็บไว้ใน rows นั้นออกมา
แต่ก็งงๆ ว่าทำไมถึงไป error ที่บรรทัด GridView4.databind()
ส่วน autonum อะคะ คือกำหนด format ใน access เป็น "E00"0 ซึ่งจะแสดงผลได้ E001 (ประมาณนี้)
แล้วในส่วนของ GridView ก็ใส่ format เป็น E00databound ซึ่งก็แสดงผลได้ E001 (แบบนี้เหมือนกัน)
แต่ว่า พอจะ Select ให้แสดงผลอ่ะคะ อย่างเช่นให้แสดง firstname กับ SentTo นู๋เขียนว่า
SELECT firstname,SentTo FROM tblAbsent WHERE IDAbsent = 'E001' หรือ IDAbsent = '1' คะ??
แล้วนู๋เขียนต่อว่า...
Code (VB.NET)
Dim com As New OledbCommand(query,con) 'con คือตัวที่ connect กับ database ค่ะ
Dim myReader As OledbDataReader = com.ExecuteReader()
While myReader.Read()
Label2.Text = myReader("firstname").ToString
Label3.Text = myReader("SentTo"),ToString
End While
myReader.Close()
คือที่ใช้คำสั่งแบบนี้ เพราะอยากให้แสดงค่าของ firstname ที่ Label2 แล้วก็ SentTo ที่ Label3 โดยตามเงื่อนไขที่ประกาศใน SELECT อ่ะคะ
แต่ก็ error บรรทัด Dim myReader As OledbDataReader = com.ExecuteReader() ทุกทีเลยค่ะ
คือไม่ต้องใช้ myReader หรือเขียน query ผิดหรอคะ???
ขอบคุณมากค่ะ (วันนี้รบกวนมาทั้งวันเลยจริงๆ แฮะ ขอโทษด้วยนะคะ > <)
|
 |
 |
 |
 |
Date :
2010-06-30 22:09:11 |
By :
akura |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอโทษค่ะ โค้ด vb ตรงบรรทัด Label3 เขียนผิด ตรง , เป็น . นะคะ > <
พอดีไม่ได้ login เข้ามาตอบ เลยกด edit แก้ไม่ได้อ่ะคะ เหอๆ ขอโทษค่ะ
ฝากคำถามไว้นะคะ ขอบคุณมากค่ะ > <
|
 |
 |
 |
 |
Date :
2010-06-30 22:12:09 |
By :
akura |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ดีแต่ว่าคนอื่นขี้บ่น นี่ถ้าบอกว่าเป็นสาววัยทองนี่ผมเชื่อนะเนี่ย 
ความดงความดีนี่ไม่เกี่ยวกับผมหรอกครับ ของน้องล้วนๆ นั่นแหละ
อธิบายให้คนอื่นยาวขนาดนี้ คนอย่างผมความอดทนไม่พอขนาดนั้นหรอกครับ 
และขอให้ผลความดีนั้นสนองไปยังน้อง ให้งานที่ทำอยู่ราบลื่นนะ
|
 |
 |
 |
 |
Date :
2010-06-30 22:55:58 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณค่ะ คำชมของพี่แพนด้า จะจดจำไม่ลืมเลือนค่ะ
งั้นยกให้พี่วินไปนะคะ ไหนๆก็ไหนๆต้องมีคนรับสักคนอะค่ะ
|
 |
 |
 |
 |
Date :
2010-06-30 23:08:38 |
By :
blurEyes |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณสำหรับคำแนะนำค่ะ ^^
ได้ความรู้มาพอสมควรเลยค่ะ ยังไงคงพยายามต่อๆ ไปค่ะ
(ข้อสงสัยคิดว่าคงมีเรื่อยๆ เขียนเองแล้วติด error เอง แล้วแก้ไม่ถูกซะส่วนใหญ่ T-T)
ขอให้งานคุณ Stupid gal สำเร็จได้ด้วยดีนะคะ (สาธุๆ)
|
 |
 |
 |
 |
Date :
2010-07-01 08:30:44 |
By :
akura |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
มาแจ้งให้ทราบค่ะ ว่าทำได้แล้ว (ขอบคุณมากค่ะ)
ผิดเหมือนเส้นผมบังตา - -" (เอ๊ะ? หรือเส้นผมบังภูเขา แนวๆ นั้น แฮะๆ)
รบกวนมาเยอะ จากนี้จะพยายามหนักกว่านี้ค่ะ (โค้งง)
|
 |
 |
 |
 |
Date :
2010-07-01 09:54:16 |
By :
akura |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ยินดีด้วยค่ะ
มาพยามด้วยกันต่อไปนะคะ ^^
|
 |
 |
 |
 |
Date :
2010-07-01 10:26:13 |
By :
blurEyes |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
สู้ๆ ค่ะ ^^
|
 |
 |
 |
 |
Date :
2010-07-01 10:30:35 |
By :
akura |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณมากครับ นำไปใช้ได้จริง เป็นประโยขน์มากๆ เลย
มีอีก 1 คำถามครับ
ถ้าเกิดผมต้องการให้เปิดฟอร์มใหม่ในหน้าเดิมล่ะครับ ไม่ต้องเด้งขึ้นหน้าใหม่น่ะครับ
|
 |
 |
 |
 |
Date :
2010-07-07 06:59:55 |
By :
NightMal2e |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลองทำดูได้แล้วครับ ก็จะเป็น
e.Row.Cells(5).Attributes.Add("onclick", "window.open('" + urlstring + "', target='_self')")
|
 |
 |
 |
 |
Date :
2010-07-07 08:10:57 |
By :
MightMal2e |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณที่มาแลกเปลี่ยนความรู้กันค่ะ ได้ใช้ด้วยเหมือนกัน ที่ขึ้นหน้าเดิม ^^
ขอบคุณค่ะ
|
 |
 |
 |
 |
Date :
2010-07-07 11:44:19 |
By :
akura |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
zbf
|
ประวัติการแก้ไข 2010-09-02 01:01:58
 |
 |
 |
 |
Date :
2010-09-02 00:59:58 |
By :
portwit |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|