|
|
|
ต้องการนำข้อมูลใน textbox ที่กรอกใน gridview ออกมาใช้งาน |
|
|
|
|
|
|
|
ในตัวอย่างที่ให้มานั้น control ใน grid ได้กำหนดไว้ก่อนหน้า DataBind แล้ว ทำให้สามารถ FindControl ได้
แต่ในกรณีของผม BindData จาก DataTable แล้ว จึง Add Control
ตอนนี้จึงยังไม่สามารถนำค่าใน Control ออกมาใช้ได้
รบกวนด้วยครับ ขอบคุณครับ
|
|
|
|
|
Date :
2010-08-05 09:06:47 |
By :
urachima |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
หมายถึงกรอกค่าใส่ TextBox ที่อยู่ใน GridView แล้วจะเอาค่าในTextนั้นมาใช่มั้ยครับ
-> TextBox xxx = (TextBox)GridView1.Rows[0].FindControl("txt1");
xxx.text ก็ได้ค่าแล้วครับ ลองดู
|
|
|
|
|
Date :
2010-08-05 18:31:47 |
By :
nongakpb |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
กริดวิว ใช้เป็นเทมเพลตง่ายกว่ามั้ยคะ
Code (ASP)
<Columns>
<asp:TemplateField HeaderText="Recorded Date">
<ItemTemplate>
<asp:Label ID="lblrecorddate" runat="server" Text='<%# Bind("recorddate") %>'></asp:Label>
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Recorded by">
<ItemTemplate>
<asp:Label ID="lblrecordby" runat="server" Text='<%# Bind("recordby") %>'></asp:Label>
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Responsible">
<ItemTemplate>
<asp:TextBox ID="txtresponse" runat="server" Height="40px" Width="200px"
TextMode="MultiLine" Text='<%# (Eval("status"))== "Pending" ? "":Eval("responsetext")%>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField HeaderText="Responsible by" DataField ="responseby"/>
<asp:TemplateField HeaderText="Responsible Date">
<ItemTemplate>
<asp:Label ID="lblresponsedate" runat="server" Text='<%# Bind("responsedate") %>'></asp:Label>
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Status">
<ItemTemplate>
<asp:DropDownList ID="ddlactionstatus" runat="server" text='<%# Bind("status") %>' >
<asp:ListItem>Pending</asp:ListItem>
<asp:ListItem>Inprocess</asp:ListItem>
<asp:ListItem>Complete</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
</Columns>
Code (C#)
GridView1.DataSource = DT;
GridView1.DataBind();
DT.Dispose();
for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
{
TextBox responsetext = (TextBox)GridView1.Rows[i].FindControl("txtresponse");
Label lblrecorddate = (Label)GridView1.Rows[i].FindControl("lblrecorddate");
Label lblresponsedate = (Label)GridView1.Rows[i].FindControl("lblresponsedate");
lblrecorddate.Text = Convert.ToDateTime(lblrecorddate.Text).ToString("dd/MM/yyyy HH:mm");
if (lblresponsedate.Text != "")
{
lblresponsedate.Text = Convert.ToDateTime(lblresponsedate.Text).ToString("dd/MM/yyyy HH:mm");
}
|
|
|
|
|
Date :
2010-08-05 23:30:29 |
By :
njnight |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ปัญหาของผมคือ user สามารถกำหนดเองได้ว่าต้องดู columns ใดบ้าง จึงไม่สามารถกำหนดจำนวน FieldTemplate ได้
หากรู้จำนวน columns แน่นอน ผมก็สามารถกำหนด FieldTemplate เองได้ครับ และก็จะสามารถใช้ FindControl ได้
ส่วนรายละเอียดปัญหาก็เหมือนด้านบนตามเดิม
ใครพอรู้แนวทางแก้ไขยังไงรบกวนทีนะครับ ขอบคุณครับ
|
|
|
|
|
Date :
2010-08-06 10:35:20 |
By :
urachima |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คิดวิธีดีๆ ออกแล้ว
ก็โชว์มันทุก column เลยซิครับ แล้วเวลา user เลือกดู column ไหนก็โชว์เฉพาะ column นั้น
ที่เหลือก็ hide ให้หมด การใช้ show/hide จะง่ายกว่า add แบบ dynamic ครับ
เวลาอ้างอิง column index แล้ว index ก็ไม่เลื่อนด้วย
|
ประวัติการแก้ไข 2010-08-06 11:04:00
|
|
|
|
Date :
2010-08-06 10:48:59 |
By :
tungman |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ต้องขอบคุณแนวคิดของคุณ tungman นะครับ
ตอนนี้ผมแก้ได้แล้วครับ
โดยให้มันโชว์ทุก columns โดยทุก columns นั้นทำเป็น template ไว้ ใส่ textbox ข้างในพร้อมกับตั้ง visible = false
เวลา user ต้องการใช่ columns ไหน ก็ visible = ture ขึ้นมา
วิธีนี้จะสามารถใช้ FindControl ได้ครับ
เผื่อใครเจอปัญหาแบบผมก็ลองใช้วิธีนี้ดูนะครับ
แล้วก็ต้องขอขอบคุณทุกท่านที่ช่วยกันหาวิธีแก้ด้วยนะครับ
ขอบคุณมากครับ
|
|
|
|
|
Date :
2010-08-09 10:25:56 |
By :
urachima |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 03
|