Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > .NET Framework > Forum > Web(Asp.net) รบกวนสอบถามเกี่ยวกับการเขียนใน file .ascx หน่อยครับ



 

Web(Asp.net) รบกวนสอบถามเกี่ยวกับการเขียนใน file .ascx หน่อยครับ

 



Topic : 095601



โพสกระทู้ ( 109 )
บทความ ( 0 )



สถานะออฟไลน์




ผมอยากทราบว่าการเขียนใน WebUserControl.ascx ต่างจากการเขียนใน WebForm.aspx ไหม ครับ และมีข้อดีอย่างไร และ ถ้าเขียนระบบงานแบบใน มหาวิทยาลัยแบบใหญ่ๆนี่ .ascx ดีกว่าไหม ข้อตัวอย่างแนะแนวทางหน่อยครับ



Tag : .NET, Web (ASP.NET), C#, VS 2010 (.NET 4.x)







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2013-05-23 09:49:38 By : offonepoint View : 3740 Reply : 23
 

 

No. 1



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

ไม่ต่างครับ ascx มันเป็น Usercontrol ครับ เรียกใช้งานตรง ๆ ไม่ได้ จะต้องเอาไป Include ในไฟล์ .aspx ครับ

ASP.NET Web User Control







แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-05-23 10:47:02 By : mr.win
 


 

No. 2

Guest


Quote:
ผมอยากทราบว่าการเขียนใน WebUserControl.ascx ต่างจากการเขียนใน WebForm.aspx ไหม ครับ


- การเขียนไม่ต่างกัน มี life cycle ของใครของมัน

Quote:
และมีข้อดีอย่างไร


- การใช้ ascx เหมือนกับการใช้ include ของ php คือแยกเขียนส่วนต่างๆ ของเพจออกเป็นส่วนๆ (ascx)

แล้วค่อยเอามารวมเป็นที่ aspx ซึ่ง ascx นี้เหมือนการมัดรวม control ต่างๆ เอาไว้ ทำให้เวลาเรียกใช้

ก็สามารถเรียกใช้แค่ทีเดียว ได้ control เป็นก้อนๆ นึงเลย และสิ่งที่พิเศษกว่าการ include ของ php ก็คือ

มันสามารถใช้ delegate ได้ ทำให้เราสามารถกำหนด event ต่างๆ ของ control ใน ascx ได้อีกด้วย

ยกตัวอย่างเช่น control ปกติ เช่น button มี event click เราก็สามารถสร้าง ascx ของเราให้มี event แบบนั้น

โดยการใช้ delegate

Quote:
ถ้าเขียนระบบงานแบบใน มหาวิทยาลัยแบบใหญ่ๆนี่ .ascx ดีกว่าไหม


- ก็แล้วแต่
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-05-23 10:47:09 By : ห้ามตอบเกินวันละ 2 กระทู้
 

 

No. 3



โพสกระทู้ ( 464 )
บทความ ( 0 )



สถานะออฟไลน์
Twitter Facebook Hi5

ไม่ทัน


ประวัติการแก้ไข
2013-05-23 10:51:02
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-05-23 10:50:16 By : dekkuza
 


 

No. 4



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-05-23 11:01:12 By : mr.win
 


 

No. 5

Guest


ผมยังมองไม่เห็นข้อเสียของ .ascx (User Control)

.aspx = เจ้าของผู้สวมใส่ (สาวฯทั้งหลาย)
.ascx = กางเกงในตัวน้อยฯ ที่หล่อนฯ ใช้สวมใส่


แต่ถ้าจะใช้ .ascx ในระบบงานจริง ผมมีข้อเสนอดังนี้ครับ (ไม่ใช่คำแนะนำ)
ต้องโหลด .ascx แบบไดนามิค (Dynamic Load User Control) เท่านั้น

และแน่นอนว่าคุณต้องเจอปัญหา
---- การผ่านค่าพารามิเตอร์ ไปและกลับ ระหว่าง MasterPage/Page/User Control (Delegate)
---- ยืนยันตัวตนของ User Control ให้ได้ (User Control State) ยกตัวอย่างเช่น
Event Page Load
------- Page.PanelContainnerXXX.Controls.Clear()
------- Page.PanelContainnerXXX.Controls.Add("your User Control")
------- ...
End Event Page Load



[x] ผมเก็บ User Control (.ascx) เอาไว้ที่ Database (RDBMS)
----TableASCX
---- PageID -------- ascxName ---- ascxObject---etc
................................................................................
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-05-23 12:51:16 By : ผ่านมา
 


 

No. 6

Guest


Quote:
ผมยังมองไม่เห็นข้อเสียของ .ascx (User Control)

.aspx = เจ้าของผู้สวมใส่ (สาวฯทั้งหลาย)
.ascx = กางเกงในตัวน้อยฯ ที่หล่อนฯ ใช้สวมใส่


- เป็นผู้หญิงที่ใส่กางเกงในทีละหลายตัวมาก แต่ไม่ใส่ก็ดีนะ

Quote:
แต่ถ้าจะใช้ .ascx ในระบบงานจริง ผมมีข้อเสนอดังนี้ครับ (ไม่ใช่คำแนะนำ)
ต้องโหลด .ascx แบบไดนามิค (Dynamic Load User Control) เท่านั้น


- ผมว่ามันแล้วแต่กรณีนะ แต่ก็มีบางทีที่ต้องเรียก ascx แบบ dynamic บ้าง

แต่ปกติจะใช้แบบ fix ที่ aspx เลย

Quote:
---- การผ่านค่าพารามิเตอร์ ไปและกลับ ระหว่าง MasterPage/Page/User Control (Delegate)


- ถ้าใช้ delegate ก็จะไม่พบปัญหาพวกการผ่านค่าครับ

เพราะจะส่งอะไรก็ส่งผ่าน event arg (บางทีอาจจะต้องสร้าง class arg เองก็มี)

Quote:
---- ยืนยันตัวตนของ User Control ให้ได้ (User Control State) ยกตัวอย่างเช่น
Event Page Load
------- Page.PanelContainnerXXX.Controls.Clear()
------- Page.PanelContainnerXXX.Controls.Add("your User Control")
------- ...
End Event Page Load


- เรียก ascx แบบ dynamic ถ้าจำไม่ผิด ต้องเรียกผ่าน ASP.<-- ชื่อ usercontrol -->

ซึ่งมันจำเป็นมากในการกำหนด type ให้ถูกต้อง ไม่งั้นจะใช้ method ที่เราเขียนใน ascx ไม่ได้

แต่ถ้าไม่ซีเรียส cast เป็น usercontrol ก็ได้

Quote:
[x] ผมเก็บ User Control (.ascx) เอาไว้ที่ Database (RDBMS)
----TableASCX
---- PageID -------- ascxName ---- ascxObject---etc
................................................................................


- ก็แล้วแต่
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-05-23 13:30:37 By : ห้ามตอบเกินวันละ 2 กระทู้
 


 

No. 7

Guest


ปัญหาที่ 1. สมมุติว่า ddlLostState = User Control
---------------------- เมื่อคลิกที่ปุ่ม PostBack
---------------------- ปัญหาหนักอกที่พบคือ?


WebForm1.aspx
Code (VB.NET)
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm1.aspx.vb" Inherits="DynamicUserControlState.WebForm1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
    <asp:Button ID="btnPostBackLostState" runat="server" Text="PostBack" />
    </form>
</body>
</html>



WebForm1.aspx.vb
Code (VB.NET)
Public Class WebForm1
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not IsPostBack Then
            Dim ddlLostState As DropDownList = New DropDownList()
            ddlLostState.ID = "dynOHmyGod"
            ddlLostState.Items.Add("A")
            ddlLostState.Items.Add("B")
            ddlLostState.Items.Add("C")
            ddlLostState.Items.Add("D")
            PlaceHolder1.Controls.Add(ddlLostState)
        End If
    End Sub

End Class

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-05-23 13:55:18 By : ผ่านมา
 


 

No. 8



โพสกระทู้ ( 109 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณทุกๆคนที่แนะนำคับ. ได้ความรู้มากขึ้นคับ ^ ^ แนะนำอีกได้นะ อิอิ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-05-23 14:48:28 By : offonepoint
 


 

No. 9

Guest


สร้าง class ชื่อ UserControlClickEventArgs.cs ไว้ที่ folder app_code

UserControlClickEventArgs.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

public delegate void UserControlClickEventHandler(object source, UserControlClickEventArgs e);
/// <summary>
/// Summary description for UserControlEventArgs
/// </summary>
public class UserControlClickEventArgs : EventArgs
{
    private object _eventArg;

    public UserControlClickEventArgs(object EventArg)
	{
		//
		// TODO: Add constructor logic here
		//
        _eventArg = EventArg;
	}

    public object EventArg
    {
        get { return _eventArg; }
    }
}



สร้าง user control

WebUserControl.ascx.cs
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>

<asp:DropDownList ID="DropDownList1" runat="server">
</asp:DropDownList>
<br />
<br />
<asp:Button ID="Button1" runat="server" Text="Button" />


WebUserControl.ascx
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class WebUserControl : System.Web.UI.UserControl
{
    public event UserControlClickEventHandler Click;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.Page.IsPostBack)
        {
            this.DropDownList1.Items.Add(new ListItem("A", "A"));
            this.DropDownList1.Items.Add(new ListItem("B", "B"));
            this.DropDownList1.Items.Add(new ListItem("C", "C"));
            this.DropDownList1.Items.Add(new ListItem("D", "D"));
            this.DropDownList1.Items.Add(new ListItem("E", "E"));
        }

        this.Button1.Click += new EventHandler(Button1_Click);
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        if (this.Click != null)
            this.Click(this, new UserControlClickEventArgs(this.DropDownList1.SelectedItem.Value));
    }
}



สร้าง web form

MyUserControl.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyUserControl.aspx.cs" Inherits="MyUserControl" %>
<%@ Register TagPrefix="userControl" TagName="WebUserControl" Src="~/WebUserControl.ascx" %>
<%@ Reference Control="~/WebUserControl.ascx" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
        <br />
        <br />
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    </div>
    </form>
</body>
</html>


MyUserControl.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class MyUserControl : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        this.Label1.Text = string.Empty;

        ASP.webusercontrol_ascx webUserControl = new ASP.webusercontrol_ascx();
        webUserControl.Click += new UserControlClickEventHandler(webUserControl_Click);

        this.PlaceHolder1.Controls.Add(webUserControl);
    }

    protected void webUserControl_Click(object sender, UserControlClickEventArgs e)
    {
        Label1.Text = string.Format("you choose: {0}", (string)e.EventArg);
    }
}



รัน
1


คลิก
2
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-05-23 14:51:01 By : ห้ามตอบเกินวันละ 2 กระทู้
 


 

No. 10

Guest


#NO9

MyUserControl.aspx.cs
บันทัดที่ 13 - 17 ลองแก้ไข แล้วลอง Click ดูครับ ?
(ผมย้ำตรงนี้ ? ลองพิจารณาดูดีฯครับ )

Code (C#)
        if (!IsPostBack)
        {
            ASP.webusercontrol_ascx webUserControl = new ASP.webusercontrol_ascx();
            webUserControl.Click += new UserControlClickEventHandler(webUserControl_Click);
            this.PlaceHolder1.Controls.Add(webUserControl);
        }



MyUserControl.aspx

บันทัดที่ 2 - 3 เป็นการอ้างถึง WebUserControl.ascx (ในกรณีนี้มี 1 อัน ดูเหมือน Dynamic แต่ไม่ใช่)
ผมมีข้อสงสัยตามมาว่า ถ้าผมมี User Control เป็นร้อยฯ พันฯ อัน แล้ว
บันทัดที่ 2 - 3 มันจะมีหน้าตาเป็นอย่างไรครับ?


[x] โจทย์ของเราคือคำว่า Dynamic User Control
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-05-23 17:26:14 By : ผ่านมา
 


 

No. 11

Guest


ตอบความคิดเห็นที่ : 9 เขียนโดย : ห้ามตอบเกินวันละ 2 กระทู้ เมื่อวันที่ 2013-05-23 14:51:01
รายละเอียดของการตอบ ::
#NO7 ผมยกตัวอย่างการโหลด User Control ในอีเวนต์ Page_Load เพื่อประกอบความเข้าใจครับ

แต่ในความเป็นจริงแล้ว มันต้องคลิกปุ่มโน้นปุ่มนี้ หรือตามที่เราต้องการ (เข้าใจได้ง่ายฯ ก็คือ เมนู นั่นแหละครับ)
แล้วค่อยโหลด User Control

รับรองได้ว่าไม่มีทางที่จะโหลดใน Event Page_Init หรือ Page_Load
แน่นอน 100% ครับ


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-05-23 17:38:42 By : ผ่านมา
 


 

No. 12

Guest


Quote:
MyUserControl.aspx.cs
บันทัดที่ 13 - 17 ลองแก้ไข แล้วลอง Click ดูครับ ?
(ผมย้ำตรงนี้ ? ลองพิจารณาดูดีฯครับ )


- เป็นคำถามหรือคำแนะนำ ???



Quote:
MyUserControl.aspx

บันทัดที่ 2 - 3 เป็นการอ้างถึง WebUserControl.ascx (ในกรณีนี้มี 1 อัน ดูเหมือน Dynamic แต่ไม่ใช่)
ผมมีข้อสงสัยตามมาว่า ถ้าผมมี User Control เป็นร้อยฯ พันฯ อัน แล้ว
บันทัดที่ 2 - 3 มันจะมีหน้าตาเป็นอย่างไรครับ?l


- เปลี่ยนที่เป็นเขียนไว้ใน web.config



Quote:
[x] โจทย์ของเราคือคำว่า Dynamic User Control


- แล้วแบบนี้มันไม่ dynamic ยังไงโปรดอธิบายเพิ่มเติม



Quote:
#NO7 ผมยกตัวอย่างการโหลด User Control ในอีเวนต์ Page_Load เพื่อประกอบความเข้าใจครับ

แต่ในความเป็นจริงแล้ว มันต้องคลิกปุ่มโน้นปุ่มนี้ หรือตามที่เราต้องการ (เข้าใจได้ง่ายฯ ก็คือ เมนู นั่นแหละครับ)
แล้วค่อยโหลด User Control

รับรองได้ว่าไม่มีทางที่จะโหลดใน Event Page_Init หรือ Page_Load
แน่นอน 100% ครับ


- จริงเหรอ สงสัยเราจะมองผ่านมาสูงไปหน่อย ไว้วันหลังจะสอนให้นะ ตอนนี้กลับไปฝึกเองพลางๆ ก่อนแล้วกัน
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-05-25 14:40:49 By : ห้ามตอบเกินวันละ 2 กระทู้
 


 

No. 13

Guest


ตอบความคิดเห็นที่ : 12 เขียนโดย : ห้ามตอบเกินวันละ 2 กระทู้ เมื่อวันที่ 2013-05-25 14:40:49
รายละเอียดของการตอบ ::
เป็นคำถามหรือคำแนะนำ ???


เป็นคำแนะนำครับ


ตอบความคิดเห็นที่ : 12 เขียนโดย : ห้ามตอบเกินวันละ 2 กระทู้ เมื่อวันที่ 2013-05-25 14:40:49
รายละเอียดของการตอบ ::
แล้วแบบนี้มันไม่ dynamic ยังไงโปรดอธิบายเพิ่มเติม


ดูหัวข้อ No. 7
WebForm1.aspx และ WebForm1.aspx.vb จำนวน SourceCode รวมกัน 30 บรรทัด
ดูเหมือนว่างเปล่า แต่มันมีคำอธิบายซ่อนอยู่ในนั้น
พยายามหาให้เจอครับ ใจเย็นฯ (ผมเอาใจช่วย)
วันนี้ยังหาไม่พบ วันพรุ่งนี้หรือวันต่อฯไป มันก็ต้องพบเจอจนได้


[x] ชีวิตมันต้องเรียนรู้ต่อไปไม่มีวันจบสิ้น ผมก็อยู่ภายใต้กฏเกณฑ์ข้อนี้ เช่นเดียวกันครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-05-26 07:07:25 By : ผ่านมา
 


 

No. 14



โพสกระทู้ ( 11,835 )
บทความ ( 10 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


กระทู้นี้มีสาระดีแฮะ แต่อย่าว่ากระแทกกันเลยท่านทั้งสอง
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-05-26 07:57:06 By : PlaKriM
 


 

No. 15

Guest


อ่ะ ตามท่านปลากริมก็ได้ แต่ผ่านมา นายอยู่กับร่องกับรอยหน่อยเถอะ

เรากลับไปดูโค้ดใน no.7 แล้ว นานนี่มันมั่วชัดๆ

แต่เราหยุดแระ ขืนต่อไปก็ไม่จบ งั้นเราเลิกบอกห้องนี้แระ

พอดีเห็นมีห้อง java เปิดใหม่เราว่าเราไปเล่นห้องนั้นดีกว่า

สำหรับ .net เราว่าเราอิ่มตัวแล้วแหละ เพราะสิ่งที่เราอยากรู้

เราก็รู้หมดแล้ว สิ่งไหนที่เราอยากถ่ายทอด เราก็ไม่รู้เขียนไปจะมีคนสนใจหรือเปล่า

นายจะตามไปก็ได้นะ แต่ post ไหนไร้สาระโดนเราลบทิ้งแน่ๆ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-05-27 08:00:26 By : ห้ามตอบเกินวันละ 2 กระทู้
 


 

No. 16

Guest


ตอบความคิดเห็นที่ : 15 เขียนโดย : ห้ามตอบเกินวันละ 2 กระทู้ เมื่อวันที่ 2013-05-27 08:00:26
รายละเอียดของการตอบ ::
นายอยู่กับร่องกับรอยหน่อยเถอะ


ถ้ายังจำได้ พระชั้นผู้ใหญ่ระดับ พระพรหม ผู้ถือศีล 227 ข้อ (ทฤษฏี ศีลสูง เข้าไกล้อริยะสงฆ์)
ยังสึกออกมาให้พวกเราเรียกว่า "ไอ้ทิด" (หันกลับมาใช้ วิธีปฏิบัติ ศีลต่ำ เพียงไม่กี่ข้อ)

แล้วนับประสาอะไรกับผมผู้ถือศีล 5 ข้อและปฏิบัติจริงไม่ได้แม้แต่ข้อเดียว


ตอบความคิดเห็นที่ : 15 เขียนโดย : ห้ามตอบเกินวันละ 2 กระทู้ เมื่อวันที่ 2013-05-27 08:00:26
รายละเอียดของการตอบ ::
เรากลับไปดูโค้ดใน no.7 แล้ว นานนี่มันมั่วชัดๆ


ชื่อเสียงหรือว่าความสำเร็จที่ยิ่งใหญ่ มันเริ่มต้นมาจากอุปสรรคเล็กฯน้อย เสมอ ยกตัวอย่างเช่น
กฏแรงโน้มถ่วงของโลก (นิวตัน) มันมาจากความบังเอิญ ลูกแอปเปิลหล่นลงมาแค่ลูกเดียว
(พวกเราคงไม่รู้จัก ท่่านนิวตัน ถ้าบังเอิญว่า มันเป็นลูกทุเรียน)


ตอบความคิดเห็นที่ : 15 เขียนโดย : ห้ามตอบเกินวันละ 2 กระทู้ เมื่อวันที่ 2013-05-27 08:00:26
รายละเอียดของการตอบ ::
สำหรับ .net เราว่าเราอิ่มตัวแล้วแหละ เพราะสิ่งที่เราอยากรู้

เราก็รู้หมดแล้ว สิ่งไหนที่เราอยากถ่ายทอด เราก็ไม่รู้เขียนไปจะมีคนสนใจหรือเปล่า


อย่าไปปิดกั้นตัวเองครับ (ผมเสียดายและเป็นกำลังใจให้ครับ)


ตอบความคิดเห็นที่ : 15 เขียนโดย : ห้ามตอบเกินวันละ 2 กระทู้ เมื่อวันที่ 2013-05-27 08:00:26
รายละเอียดของการตอบ ::
นายจะตามไปก็ได้นะ แต่ post ไหนไร้สาระโดนเราลบทิ้งแน่ๆ


***** ผมขับรถ สิบล้อ (พ่วง) ไปทำงานทุกวัน ผมเกรงใจตัวเองและ กลัวคนอื่นจะไม่มีที่จอดรถ
*** มนุษย์เป็นผู้สร้าง ขยะ และเป็นผู้สร้าง ไร้สาระ
** คำว่า ไร้สาระหรือขยะ มันอันเดียวกัน แต่ถ้าเรารู้จักคัดแยก/แยกแยะ มันก็มีมูลค่าเป็นเงินเป็นทองได้ และ
** ที่สำคัญ มันมีมูลค่านามธรรม มากกว่า เงินทอง มันเป็นมิตรกับสิ่งแวดล้อมและรักโลก
* ขยะเราไม่ต้องเข้าไกล้ อยู่ไกลฯ เราก็ได้กลิ่นของมัน และกลิ่นของมันก็ไม่เคยเปลี่ยนแปลง
* จิตใจมนุษย์ สกปรกแค่ไหน เราอยู่ไกล้หรือว่าอยู่ไกล เราก็ไม่เคยได้กลิ่นของมัน
* มนุษย์(ที่มีจิตใจสกปรก) เป็นพิษกับสิ่งแวดล้อม เป็นผู้ทำลายโลก
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-05-27 09:55:38 By : ผ่านมา
 


 

No. 17

Guest


เนอะ...ระดับเทพ จริง ๆ ว่าแต่เทพ ทำไม กระแหนะกระแหน กันล่ะครับ หนึ่งบวกหนึ่ง = 2 น่าจะดีกว่านะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-05-30 01:48:08 By : ผ่านมาเห็นแล้วอยากช่วย
 


 

No. 18

Guest


ตอบความคิดเห็นที่ : 17 เขียนโดย : ผ่านมาเห็นแล้วอยากช่วย เมื่อวันที่ 2013-05-30 01:48:08
รายละเอียดของการตอบ ::
เนอะ...ระดับเทพ จริง ๆ ว่าแต่เทพ ทำไม กระแหนะกระแหน กันล่ะครับ หนึ่งบวกหนึ่ง = 2 น่าจะดีกว่านะครับ


ผม เป็นอดีต อันนี้ผมยอมรับตัวเอง หน่วยนับข้ามเวลาแต่ละช่วง/คาบ ของผม
== [i] ((60 * 60 * 60 ) * 24) * ( (366 Mod .25) * (365) * 1000) * (500 ^ 1/1000)) == 500 ปีในปัจจุบัน
คาบ(เวลา/กระพริบตา) โน้น เขาถือว่า มือทั้งสองข้าง ถ้าถือด้ามฟืน ตีหัวลากเข้าบ้าน มีลูกเต็มบ้านหลานเต็มเมือง มันเป็นแบบนี้


คุณห้ามตอบเกินวันละ 2 กระทู้/ คุณผ่านมาเห็นแล้วอยากช่วย
อันนี้ผมยอมรับว่า นี่คือ อนาคต


[x] โปรดเข้าใจว่า ผมเป็น อดีตดึกดำบรรพ์ (ผมไม่คิดอยากจะทำร้ายอนาคต [ลูกหลานของผม])
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-05-30 21:48:07 By : ผ่านมา
 


 

No. 19

Guest


คนตั้งกระทู้ยังไม่เชื่อมั่นในตัวเองเลยกับ User Controls

แต่เชื่อหรือไม่ว่าผมใช้ SourceCode แค่นี้จริงฯ กับ All With out All & Basic Data
โดยใช้ Dynamic Load User Controls
โดยใช้ Source Code ไม่ถึง 2 ร้อยบรรทัด

I am dinosous


Code (VB.NET)
Imports System.Web.UI
Imports System.Reflection
Imports WL_Common.GridManager
Imports WL_Security.Crypter
Imports I_AM_Dinosorus

Public Class usrGoodLuckRights
    Inherits System.Web.UI.UserControl

    Sub New()
    End Sub

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        If ViewState("curPagesysMenus") Is Nothing Then
            Dim lstmsrRoles = DirectCast(WL_Session.GlobalSession.Current.msrRoles, List(Of WL_Model.msrRoles)).FindAll(Function(x) x.RoleID > 900 And x.RoleID < 1200)
            cboRoles.Items.Add(New ListItem() With {.Text = "โปรดเลือก...", .Value = "-1"})
            For Each r In lstmsrRoles
                cboRoles.Items.Add(New ListItem() With {.Text = r.RoleName, .Value = r.RoleID.ToString()})
            Next
            cboRoles.SelectedIndex = 0

            Dim lstmsrUsers = msrUsers.GetList().ToList()
            cboUsers.Items.Add(New ListItem() With {.Text = "โปรดเลือก...", .Value = "-1"})
            For Each r In lstmsrUsers
                cboUsers.Items.Add(New ListItem() With {.Text = r.UserName, .Value = r.UserID.ToString()})
            Next
            cboUsers.SelectedIndex = 0

            Dim dt = sysMenus.GetListHierarchyDataTable(4, "GoodLuck")

            dt.Columns.Add(New DataColumn() With {.ColumnName = "ACL", .DataType = GetType(String), .DefaultValue = "0000000000"})
            dt.PrimaryKey = New DataColumn() {dt.Columns("MenuCode")} '{dt.Columns("MenuCode"), dt.Columns("PageID")}
            dt.AcceptChanges()

            ViewState("curPagesysMenus") = dt
            Repeater1.DataSource = dt
            Repeater1.DataBind()
            Repeater2.DataSource = dt
            Repeater2.DataBind()
        End If

    End Sub

#Region "Repeater Manager"
    'Thank : #095316 คุณ กำลังเครียด/คุณ ห้ามตอบเกินวันละ 2 กระทู้ (www.thaicreate.com)
    Private Sub Repeater1_ItemDataBound(sender As Object, e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles Repeater1.ItemDataBound
        Call RepeaterMgr(e)
    End Sub

    Private Sub Repeater2_ItemDataBound(sender As Object, e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles Repeater2.ItemDataBound
        Call RepeaterMgr(e)
    End Sub

    Private Sub RepeaterMgr(ByVal e As RepeaterItemEventArgs)
        If ((e.Item.ItemType = ListItemType.Item) OrElse (e.Item.ItemType = ListItemType.AlternatingItem)) Then
            Dim drv As DataRowView = DirectCast(e.Item.DataItem, DataRowView)
            Dim lblMenuName As Label = DirectCast(e.Item.FindControl("lblMenuName"), Label)
            lblMenuName.Text = drv.Item("xTitleTH").ToString()
            '***** Fixed Bug's Item.DataItem are all null when postback.
            lblMenuName.Attributes.Add("MenuID", drv.Item("MenuID"))
            lblMenuName.Attributes.Add("ACL", drv.Item("ACL"))
            '*****
            Enumerable.ToList(Of Control)((From c In Enumerable.Cast(Of Control)(e.Item.Controls)
                Where (c.GetType Is GetType(CheckBox))
                Select c)).ForEach(Sub(c As Control)
                                       Dim cb As CheckBox = DirectCast(c, CheckBox)
                                       Try
                                           cb.Checked = If(drv.Item("ACL").ToString().Substring(Convert.ToSByte(cb.ID.Substring(1)), 1) = "1", True, False)
                                       Catch ex As Exception
                                           cb.Checked = False
                                       End Try
                                   End Sub)
        End If
    End Sub

    Protected Sub SaveData(sender As Object, e As EventArgs)
        'Test only
        Dim btnSave = DirectCast(sender, Button)

        If btnSave.ID = "btnSaveU" Then
            If cboUsers.SelectedValue = "-1" Then
                'alert("Please select...");
                Return
            End If
        Else
            If cboRoles.SelectedValue = "-1" Then
                'alert("Please select...");
                Return
            End If
        End If
        'End Test only

        Dim strACL As String '= String.Empty
        Dim s As New StringBuilder()

        s.Append("MERGE INTO msrFormPerm AS T ") 'Target
        s.Append("USING ( VALUES ")

        Dim dt As DataTable = DirectCast(ViewState("curPagesysMenus"), DataTable)
        Dim dr As DataRow = dt.Rows(0)
        Dim _iCount As Integer = 0 'Check Change.

        For Each item In Me.Repeater1.Items
            strACL = String.Empty
            If ((item.ItemType = ListItemType.Item) OrElse (item.ItemType = ListItemType.AlternatingItem)) Then
                'Dim drv As DataRowView = DirectCast(item.DataItem, DataRowView) 'item.DataItem are all null
                Dim lblMenuName As Label = DirectCast(item.FindControl("lblMenuName"), Label)
                Enumerable.ToList(Of Control)((From c In Enumerable.Cast(Of Control)(item.Controls)
                    Where (c.GetType Is GetType(CheckBox))
                    Select c)).ForEach(Sub(c As Control)
                                           strACL &= If(DirectCast(c, CheckBox).Checked, "1", "0")
                                       End Sub)
                'If Not lblMenuName.Attributes.Item("ACL").Equals(strACL) Then
                '    _iCount += 1
                'End If
                s.Append("(999, ") 'Maybe Fixed Branch 999
                s.Append(lblMenuName.Attributes.Item("MenuID") & ", ")
                If btnSave.ID = "btnSaveU" Then
                    s.Append("0, ") '0 = Users ID, Otherwise is Group ID
                    s.Append(cboUsers.SelectedValue & ", ")
                Else
                    s.Append(cboRoles.SelectedValue & ", ")
                    s.Append("0, ") '0 = Groups ID, Otherwise is User ID
                End If
                s.Append("'" & strACL & "'), ") 'Rem*****
            End If
        Next
        s.Remove(s.Length - 2, 2) 'Remove End of Rem***** [,Space(1)]
        s.Append(") AS S (BranchID, PageID, RoleID, UserID, ACL) ") 'Source
        s.Append("ON T.BranchID = S.BranchID AND T.PageID = S.PageID AND T.RoleID = S.RoleID AND T.UserID = S.UserID ")
        s.Append("WHEN MATCHED AND S.ACL = N'0000000000' THEN ")
        s.Append("DELETE ")
        s.Append("WHEN MATCHED THEN ")
        s.Append("UPDATE SET ACL = S.ACL ")
        s.Append("WHEN NOT MATCHED BY TARGET AND S.ACL <> N'0000000000' THEN ")
        s.Append("INSERT (BranchID, PageID, RoleID, UserID, ACL) VALUES (S.BranchID, S.PageID, S.RoleID, S.UserID, S.ACL);")

        'If _iCount > 0 Then
        Dim Result = WL_Database.WL_SQLHelperExt.SetScalar(s.ToString(), 180) ' 3 x 60 = 3 นาที
        If Result IsNot Nothing Then
            Dim strMsg As String = "<br> จำนวน : <b>" & DirectCast(Result, Integer) & "</b> Rows"
            DirectCast(Page.Master, WLMasterPageGoodLuck).ShowHideModalPopupWarning(WL_Common.PageManager.GetLabelText("SaveChangeComplete") & strMsg, True, False, "show")
        End If
        'End If
    End Sub

#End Region

    Protected Sub cboUsers_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboUsers.SelectedIndexChanged
        Call cboSelectMgr(cboUsers.SelectedValue, "b.UserID", Repeater1)
    End Sub

    Protected Sub cboRoles_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboRoles.SelectedIndexChanged
        Call cboSelectMgr(cboRoles.SelectedValue, "b.RoleID", Repeater2)
    End Sub

    Private Sub cboSelectMgr(ByVal value As String, ByVal fieldName As String, ByVal rpt As Repeater)
        Dim s As New StringBuilder()
        s.Append("Select a.MenuCode, b.* From sysMenus a Inner Join msrFormPerm b On a.MenuID = b.PageID ")
        s.Append("Where a.IsActive = 1 And " & fieldName & " = " & value)

        Dim dtsysMenus As DataTable = DirectCast(ViewState("curPagesysMenus"), DataTable)
        Dim dtmsrFormPerm As DataTable = WL_BLL.GetDataTableByQuery.GetData(s.ToString())

        dtsysMenus.Columns.Remove("ACL")
        dtsysMenus.Columns.Add(New DataColumn() With {.ColumnName = "ACL", .DataType = GetType(String), .DefaultValue = "0000000000"})

        For Each r As DataRow In dtmsrFormPerm.Rows
            Dim dr = dtsysMenus.Rows.Find(r.Item("MenuCode"))
            If dr IsNot Nothing Then
                dr.Item("ACL") = r.Item("ACL") 'Default 0000000000
            End If
        Next

        dtsysMenus.AcceptChanges()
        ViewState("curPagesysMenus") = dtsysMenus
        rpt.DataSource = dtsysMenus
        rpt.DataBind()
    End Sub

End Class

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-05-30 22:15:46 By : ผ่านมา
 


 

No. 20

Guest


ระดับผู้ใช้งาน|ระดับกลุ่มผู้ใช้าน|ข้อมูลพื้นฐานทั่วไป
มันอันเดียวกัน


I AM Dinosours2
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-05-30 22:23:24 By : ผ่านมา
 


 

No. 21

Guest


บรรทัดที่ 163 - 176 ผมใช้ DataTable เพื่อทดสอบเท่านั้น
บน Production จริงฯ ไม่น่าจะเกิน 100 บรรทัด (ที่เห็นคือ 182 บรรทัด)
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-05-30 22:31:32 By : ผ่านมา
 


 

No. 22

Guest


ต่อเนื่องมาจากกระทู้ที่ #095316
และพันกับหัวข้อกระทู้นี้ ผมหวังว่า คงจะเข้าใจเจตนาของผม(*****)

ขอให้โชคดีครับ
(สำหรับผู้ที่รู้จักให้คนอื่น คือคนที่รักตัวเองอย่างแท้จริง นี่คือสัจธรรม)

Code (VB.NET)
Imports WL_Session.GlobalSession
Imports WL_Common.PageManager

Public Class usrGoodLuckRights
    Inherits System.Web.UI.UserControl

    Sub New() '***** Important *****
    End Sub

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If ViewState("curPagesysMenus") Is Nothing Then
            Dim lstmsrRoles = DirectCast(Current.msrRoles, List(Of WL_Model.msrRoles)).FindAll(Function(x) x.RoleID > 900 And x.RoleID < 1200)
            cboRoles.Items.Add(New ListItem() With {.Text = "โปรดเลือก...", .Value = "-1"})
            For Each r In lstmsrRoles
                cboRoles.Items.Add(New ListItem() With {.Text = r.RoleName, .Value = r.RoleID.ToString()})
            Next
            cboRoles.SelectedIndex = 0

            Dim lstmsrUsers = msrUsers.GetList().ToList()
            cboUsers.Items.Add(New ListItem() With {.Text = "โปรดเลือก...", .Value = "-1"})
            For Each r In lstmsrUsers
                cboUsers.Items.Add(New ListItem() With {.Text = r.UserName, .Value = r.UserID.ToString()})
            Next
            cboUsers.SelectedIndex = 0

            Dim lstsysMenus = WL_BLL.sysMenus.GetListHierarchy(4, "GoodLuck")
            ViewState("curPagesysMenus") = lstsysMenus

            Repeater1.DataSource = lstsysMenus
            Repeater1.DataBind()
            Repeater2.DataSource = lstsysMenus
            Repeater2.DataBind()
        End If
    End Sub

    'Thank : #095316 คุณ กำลังเครียด/คุณ ห้ามตอบเกินวันละ 2 กระทู้ (www.thaicreate.com)
    Private Sub Repeater1_ItemDataBound(sender As Object, e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles Repeater1.ItemDataBound
        Call RepeaterMgr(e)
    End Sub

    Private Sub Repeater2_ItemDataBound(sender As Object, e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles Repeater2.ItemDataBound
        Call RepeaterMgr(e)
    End Sub

    Private Sub RepeaterMgr(ByVal e As RepeaterItemEventArgs)
        If ((e.Item.ItemType = ListItemType.Item) OrElse (e.Item.ItemType = ListItemType.AlternatingItem)) Then
            Dim lstObj As WL_Model.sysMenus = DirectCast(e.Item.DataItem, WL_Model.sysMenus)
            Dim lblMenuName As Label = DirectCast(e.Item.FindControl("lblMenuName"), Label)
            lblMenuName.Text = lstObj.xTitleTH 'Dynamic Language.
            '*****Fixed Bug's Item.DataItem ARE ALL NULL When PostBack.*******
            lblMenuName.Attributes.Add("MenuID", lstObj.MenuID)
            lblMenuName.Attributes.Add("ACL", lstObj.ACL)
            '*****************************************************************
            Enumerable.ToList(Of Control)((From c In Enumerable.Cast(Of Control)(e.Item.Controls)
                Where (c.GetType Is GetType(CheckBox))
                Select c)).ForEach(Sub(c)
                                       Dim cb As CheckBox = DirectCast(c, CheckBox)
                                       Try
                                           cb.Checked = If(lstObj.ACL.ToString().Substring(Convert.ToSByte(cb.ID.Substring(1)), 1) = "1", True, False)
                                       Catch ex As Exception
                                           cb.Checked = False
                                       End Try
                                   End Sub)
        End If
    End Sub

    Protected Sub SaveData(sender As Object, e As EventArgs)
        Dim btnSaveID As String = DirectCast(sender, Button).ID
        Dim rpt As Repeater = If(btnSaveID.Equals("btnSaveU"), Repeater1, Repeater2)
        If btnSaveID = "btnSaveU" AndAlso cboUsers.SelectedValue = "-1" Then
             Return 'alert("Please select...");
        ElseIf btnSaveID = "btnSaveG" AndAlso cboRoles.SelectedValue = "-1" Then
             Return 'alert("Please select...");
        End If
        Dim strACL As String
        Dim lstcurRigths As New List(Of WL_Model.msrFormPerm)
        For Each item In rpt.Items
            strACL = String.Empty
            If ((item.ItemType = ListItemType.Item) OrElse (item.ItemType = ListItemType.AlternatingItem)) Then
                '*****Dim drv As DataRowView = DirectCast(item.DataItem, DataRowView) item.DataItem are all null *****
                Dim lblMenuName As Label = DirectCast(item.FindControl("lblMenuName"), Label)
                Enumerable.ToList(Of Control)((From c In Enumerable.Cast(Of Control)(item.Controls) Where (c.GetType Is GetType(CheckBox))
                                                                            Select c)).ForEach(Sub(c)
                                                                                                   strACL &= If(DirectCast(c, CheckBox).Checked, "1", "0")
                                                                                               End Sub)
                lstcurRigths.Add(New WL_Model.msrFormPerm With {.BranchID = 999, .PageID = lblMenuName.Attributes.Item("MenuID"),
                                                                .RoleID = If(btnSaveID.Equals("btnSaveU"), 0, cboUsers.SelectedValue),
                                                                .UserID = If(btnSaveID.Equals("btnSaveG"), cboRoles.SelectedValue, 0),
                                                                .ACL = strACL
                                                               })
            End If
        Next
        Dim Result = WL_Database.WL_SQLHelperExt.SetScalar(WL_BLL.msrFormPerm.SetInsertCommand(lstcurRigths), 180) 'TimeOut 3 x 60 = 3 นาที
        If Result IsNot Nothing Then
            DirectCast(Page.Master, WLMasterPageGoodLuck).ShowHideModalPopupWarning(GetLabelText("SaveChangeComplete") & "<br> จำนวน : <b>" & DirectCast(Result, Integer) & "</b> Rows", True, False, "show")
        End If
    End Sub

    Protected Sub cboUsers_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboUsers.SelectedIndexChanged
        Call cboSelectMgr(cboUsers.SelectedValue, "UserID", Repeater1)
    End Sub

    Protected Sub cboRoles_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboRoles.SelectedIndexChanged
        Call cboSelectMgr(cboRoles.SelectedValue, "RoleID", Repeater2)
    End Sub

    Private Sub cboSelectMgr(ByVal value As String, ByVal fieldName As String, ByVal rpt As Repeater)
        Dim lstcurRights = WL_BLL.msrFormPerm.GetPagesACL(fieldName, value)
        Dim lstObj = DirectCast(ViewState("curPagesysMenus"), List(Of WL_Model.sysMenus))
        For Each r In lstObj            
            Dim tmp = lstcurRights.Find(Function(x) x.PageID = r.MenuID)
            r.ACL = If(tmp Is Nothing, "0000000000", tmp.ACL)
        Next
        ViewState("curPagesysMenus") = lstObj
        rpt.DataSource = lstObj
        rpt.DataBind()
    End Sub

End Class

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-05-31 10:12:09 By : ผ่านมา
 


 

No. 23

Guest


สุดยอดจริง ๆ ครับ ท่าน "ผ่านมา" และท่าน "ห้ามตอบเกินวันละ 2 กระทู้"...พูดไม่ออกบอกไม่ถูก...

แต่ขอบอกท่านทั้งสองว่า "นายแน่มาก"

เก่งระดับ "เทพ" จริง ๆ ครับ

แต่คุณ "ผ่านมา" ออกจะลึกซึ้งเกินกว่าที่จะเข้าใจในความหมาย และหมายความ ในการอธิบายของท่าน

แต่อย่างไรก็ดี...ขอปรบมือให้ และออกมาตอบคำถามเช่นนี้ อีก บ่อย ๆ นะครับ

นอกจากจะได้ความรู้แล้ว ยังสนุกสนาน มี อรรถรส ในการศึกษาไปอีกแบบ

เก่งครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-02 09:00:34 By : ผ่านมาเห็นแล้วอยากช่วย
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : Web(Asp.net) รบกวนสอบถามเกี่ยวกับการเขียนใน file .ascx หน่อยครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 04
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่