|
|
Rank: มือพระกาฬ Groups: Member
Joined: 6/13/2008 Posts: 79
|
| รหัสสินค้า |
ชื่อสินค้า |
เลือก |
รูปภาพ |
| 1001 |
vga |
select |
ดูภาพ |
| 1002 |
ram |
select |
ดูภาพ |
| 1003 |
hard |
select |
ดูภาพ |
โดยที่กด ดูรูปภาพ แล้วจะส่ง ค่า session["id_product"] ข้าม page คับ โดยสมุทติ มีpage ชื่อว่า picture.aspx รอรับ ค่าของ session["id_product"] แล้วคับ
แล้ว id_product คือรหัสสินค้าคับโดยจะส่ง รหัสสินค้าที่เลือก ไม่รู้ว่าเขียนส่วนไหนของ gridview คับ แล้วเขียนอย่างไรคับ ช่วยแนะนำทีคับ
ขอบคุณคับ
|
|
Rank: มือพระกาฬ Groups: Member
Joined: 9/9/2008 Posts: 62
|
ผมใช้ OnRowCommand ของ Gridview
protected void Gridview1_RowCommand(object sender, GridViewCommandEventArgs e)
{
int rowIndex = Convert.ToInt32(e.CommandArgument);
if (e.CommandName == "select")
{
//สิ่งที่จะทำเมื่อเลือก select
}
else if (e.CommandName == "showpicture")
{
string id = GridView1.Rows[rowIndex].Cells[0].Text;
Session["id_product"] = id;
Response.Redirect("picture.aspx");
}
}
อันนี้ html tag ของ Gridview
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowCommand="GridView1_RowCommand" >
<Columns>
<asp:BoundField HeaderText="รหัสสินค้า" DataField="product_id" />
<asp:BoundField HeaderText="ชื่อสินค้า" DataField="product_name" />
<asp:ButtonField CommandName="select" HeaderText="เลือก" Text="select" />
<asp:ButtonField CommandName="showpicture" HeaderText="รูปภาพ" Text="ดูภาพ" />
</Columns>
</asp:GridView>
|
|
Rank: มือพระกาฬ Groups: Member
Joined: 6/12/2008 Posts: 50 Location: King Mongkut's Institute of Technology Ladkrabang
|
ผมส่งไปให้ในเมล์แล้วนะครับ ขอโทษทีที่ตอบช้าไปหน่อยครับ ทำตามวิธีของคุณ nuttaponp นี่หล่ะครับ ได้แล้ว
|
|
Rank: มือพระกาฬ Groups: Member
Joined: 6/13/2008 Posts: 79
|
ขอบคุณคับ แล้วขอถามอีกนิด เมื่อกด แล้วให้ ไปเปิดหน้าใหม่เลยได้ไหมคับ ผมหา Taget bank_ ไม่มีเลยคับ
หรือต้องทำยังไงคับ ช่วยด้วยคับ
|
|
Rank: มือพระกาฬ Groups: Member
Joined: 6/12/2008 Posts: 50 Location: King Mongkut's Institute of Technology Ladkrabang
|
จากโค๊ด คุณ nuttaponp เมื่อกดก็จะเข้าไปเช็คว่า commandname ที่ได้รับมาเป็น select หรือ showpicture ถ้าเป็น showpicture ก็เอาค่า id เก็บในsession แล้วก็เปิดหน้าใหม่นี่ครับ ตรงตามจุดประสงค์หรือป่าวครับ หรือต้องการทำอะไรหรอครับ อ่านแล้วงงนิดหน่อย ฮ่าๆๆๆ โทษทีครับ
|
|
Rank: มือพระกาฬ Groups: Member
Joined: 6/13/2008 Posts: 79
|
เปิดหน้าใหม่ คับแต่หน้าเก่าก็อยู่ อ่ะคับ เปิดเพิ่มขึ้นไปอีก หน้าคับ
ผมทำได้แต่ โดยใช้ Request.QueryString แต่ผมอย่ากส่งไปโดยใช้ session น่ะคับ
|
|
Rank: มือพระกาฬ Groups: Member
Joined: 9/9/2008 Posts: 62
|
อยากจะเปิดหน้าใหม่ขึ้นมา ไม่ยากครับ
แต่เนื่องจาก ASP.NET ไม่ support เรื่องนี้ ฉะนั้นเราจะใช้ Javascript
แก้นิดเดียวครับ
protected void Gridview1_RowCommand(object sender, GridViewCommandEventArgs e)
{
int rowIndex = Convert.ToInt32(e.CommandArgument);
if (e.CommandName == "select")
{
//สิ่งที่จะทำเมื่อเลือก select
}
else if (e.CommandName == "showpicture")
{
string id = GridView1.Rows[rowIndex].Cells[0].Text;
Session["id_product"] = id;
string newWindow = " <SCRIPT language=javascript>\n" +
" window.open('picture.aspx', '_blank')\n"+
" </SCRIPT>";
RegisterClientScriptBlock("launchNewWindow", newWindow);
}
}
|
|
Rank: มือพระกาฬ Groups: Member
Joined: 6/13/2008 Posts: 79
|
ขอบคุณมากๆๆคับ
ช่วยอธิบาย javascript ทีคับ RegisterClientScriptBlock("launchNewWindow", newWindow); อธิบายทีคับ
|
|
Rank: มือพระกาฬ Groups: Member
Joined: 9/9/2008 Posts: 62
|
ในที่นี้ผมใช้ฟังชั่น window.open ซึ่งเป็นฟังชันใน Javascript ดังนั้นการจะใช้ต้องอยู่ภายใน tag <Script Langauge="JavaScript"> และ </script> จากนั้นใช้ RegisterClientScriptBlock เพื่อเพิ่ม Client Script นี้เข้าไปในเวบฟอร์ม
รูปแบบคือ RegisterClientScriptBlock(string key,string script)
เพิ่มเติมครับ
พอดีตัวอย่างอันนี้ผมลอกมาจากโปรเจ็กเก่าของผม ซึ่งเป็น .NET Framework 1.1
ถ้าเป็น .NET Framework 2.0 ให้ใช้ ClientScript.RegisterClientScriptBlock แทนครับ
จากตัวอย่างข้างต้นก็จะเป็น ClientScript.RegisterClientScriptBlock(this.GetType(),"launchNewWindow", newWindow);
|
|
|
Guest |