RowCommand กับ RowDataBound นี่ต่างกันยังงัยคะ พอดีเพิ่งหัดเขียนค่ะ เลยแยกไม่ออกว่า rowcommand กับ rowdatabound นี่ต่างกันยังงัย
พอจะเข้าใจความแตกต่างของ rowcommand กับ rowdatabound แล้วค่ะ ขอบคุนมากค่ะ
แต่ขอถามเพิ่ม อีกนิดนึงค่ะ
Code (VB.NET)
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4"
CssClass="GridView1" DataKeyNames="model,addr,target,timest" DataSourceID="SqlDataSource1"
ForeColor="#333333" OnRowCommand="GridView1_RowCommand" ShowFooter="True">
<RowStyle BackColor="#EFF3FB" />
<Columns>
<asp:BoundField DataField="addr" HeaderText="addr" ReadOnly="True" SortExpression="addr" />
<asp:BoundField DataField="model" HeaderText="model" ReadOnly="True" SortExpression="model" />
<asp:BoundField DataField="shiftx" HeaderText="shiftx" ReadOnly="True" SortExpression="shiftx" />
<asp:TemplateField HeaderText="Date" SortExpression="timest">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("timest", "{0:dd/MM/yyyy HH:mm:ss}" )%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="statusx" HeaderText="statusx" ReadOnly="True" SortExpression="statusx" />
<asp:BoundField DataField="target" HeaderText="target" ReadOnly="True" SortExpression="target" />
<asp:BoundField DataField="actual" HeaderText="actual" ReadOnly="True" SortExpression="actual" />
<asp:TemplateField HeaderText="ng" SortExpression="ng">
<ItemTemplate>
<asp:LinkButton ID="LinkButtonNg" runat="server" CommandName="Detail" Text='<%# Bind("ng") %>'
ToolTip="Show Detail Ng" CommandArgument='<%# Eval("model")%>'></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<EditRowStyle BackColor="#2461BF" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>
- - - - - - - - - - -- - - - - - - -
Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand
If (e.CommandName = "Detail") Then
lblAddr.Text = GridView1.Rows(e.CommandArgument.ToString).Cells(0).Text.ToString
lblModel.Text = GridView1.Rows(e.CommandArgument.ToString).Cells(1).Text.ToString
lblDatex.Text = GridView1.Rows(e.CommandArgument.ToString).Cells(3).Text.ToString
lblTarget.Text = GridView1.Rows(e.CommandArgument.ToString).Cells(5).Text.ToString
end if
จาก code ด้านบนหลังจากที่เราคลิก link buttonแล้วตอ้งการดึงค่า ของแต่ละ cell ใน rowนั้นมาใช้ แบบนี้ถูกมั้ยคะ แต่พอรันแล้วมันแจ้งว่า
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
ประมาณนี้ค่ะ ไม่ทราบว่าต้องยังงัยต่อ ขอบคุนค่ะ
Date :
2009-09-22 09:30:38
By :
เนย
ผมแนะนำให้ดูตัวอย่างในบทเรียนน่ะครับ เพราะมีวิธีการอ่านค่าการส่งค่าในรูปแบบต่าง ๆ ที่สามารถนำไปประยุกต์ได้ครับ
Date :
2009-09-22 09:36:46
By :
webmaster
ลองไปอ่านดูแล้วค่ะ ก็ยังประยุกต์ไม่ ได้ค่ะ สงสัย skill ยังไม่ถึงพอ
ยังงัย ก้อขอบคุนมากนะคะ แต่จะพยายามต่อไปค่ะ
Date :
2009-09-23 09:47:02
By :
เนย
ถ้าเป็น Gridview มันจะมี Event SeletedIndex changed อยู่นะครับ
ให้มันจัดการเวลาที่ผู้ใช้เลือกดูรายละเอียดตรงนั้นก็ได้ครับ
Date :
2009-09-24 12:00:26
By :
5hk
Load balance : Server 02