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 > เกิด error :: System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection



 

เกิด error :: System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection

 



Topic : 048918



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



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




ผู้รู้รบกวนดูให้หน่อยค่ะ ว่าติดอะไรถึง error แบบนี้ค่ะ

error ว่า

Exception Details: System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.

Line 382: int num = Convert.ToInt16(lableIndex.Text);
Line 383:
Line 384: CheckBox chkRender = (CheckBox)myGridView.Rows[num].FindControl("chkRender");
Line 385:
Line 386:



Code (C#)
        for (int i = 0; i <= myGridView.Rows.Count - 1; i++)
        {
          // index number  จาก gridview
            Label lableIndex = (Label)(myGridView.Rows[i].FindControl("lableIndex"));
            int num = Convert.ToInt32(lableIndex.Text);

            CheckBox chkRender = (CheckBox)myGridView.Rows[num].FindControl("chkRender");


            if (chkRender.Checked)
            {
                Label ID = (Label)myGridView.Rows[num].FindControl("lblID");
                PO = (Label)myGridView.Rows[num].FindControl("lblPO");
}
}




Tag : .NET, Web (ASP.NET), VB.NET, C#







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-09-17 13:12:05 By : alonewin View : 3360 Reply : 4
 

 

No. 1



โพสกระทู้ ( 3,144 )
บทความ ( 1 )

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

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


value ใน num คงเกิน length ของ gridview

เอาโค้ดทั้ง method มาดูดิ๊ ว่ากำลังจะทำอะไร

จะอ้าง key หรือ index ทำไมเขียนแบบนี้ล่ะ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-09-17 13:39:28 By : tungman
 


 

No. 2



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



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


เรื่องก็มีอยู่ว่า...........
ต้องการให้ OnClick="btnSubmit" แล้ว lableIndex.Text ใน myGridView_RowDataBound ส่งค่าไปด้วยค่ะ
เพื่อจะได้รู้ว่า เป็น Rows อะไร ( Label ID = (Label)myGridView.Rows[.......].FindControl("lblID"); )

งงมั้ยค่ะ




Code (C#)
  protected void myGridView_RowDataBound(Object s, GridViewRowEventArgs e)
    {
if (e.Row.RowType == DataControlRowType.DataRow)
        {
                int f = e.Row.RowIndex + 1;
                Label lableIndex = (Label)(e.Row.FindControl("lableIndex"));
                lableIndex.Text = f.ToString();
       }
   }


Code (C#)
<asp:TemplateField >
		<ItemTemplate>
            
			<asp:Button id="Button1"  runat="server" Text="บันทึก" OnClick="btnSubmit"   BackColor="Silver" BorderColor="LightGray"
                  BorderStyle="Solid" Height="30px" Width="50px" ></asp:Button>
		</ItemTemplate>	
	</asp:TemplateField>
	




Code (C#)
protected void btnSubmit(Object sender, EventArgs e)
    {
     


            Label ID = (Label)myGridView.Rows[.......].FindControl("lblID");
}


ตามรูปนี้

dddd


ประวัติการแก้ไข
2010-09-17 16:07:19
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-09-17 16:04:31 By : alonewin
 

 

No. 3



โพสกระทู้ ( 3,144 )
บทความ ( 1 )

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

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


อันนี้ความคิดผมนะ และก็ผมใช้ปฎิบัติเป็นปกติด้วย คือ

ผมจะไม่ค่อยใช้ templatfield หรอกถ้าไม่จำเป็นจริงๆ

ถ้า field ไหนเป็น checkbox มันก็มี checkboxfield

field ไหนเป็น button มันก็มี commandfield

ส่วนที่ใช้แค่แสดงผลอย่างเดียวก็ใช้ boundfield

เพราะว่าเวลา bind data ทำได้ง่ายกว่า ไม่ต้องไป bind แบบ inline

หรือถ้าจะ bind ที่ code behide ก็ไม่ต้องไป find control สามารถกำหนด field กับ column แล้ว bind ได้เลย

และการใช้ command event ก็ง่าย เพราะสามารถระบุ index หรือ datakey ได้ด้วย eventargs

ฉะนั้นเขียนแบบนี้ยากตายเลย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-09-17 19:27:38 By : tungman
 


 

No. 4



โพสกระทู้ ( 3,144 )
บทความ ( 1 )

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

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


MyGridView.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyGridView.aspx.cs" Inherits="MyGridView" %>

<!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:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" 
            GridLines="None">
            <AlternatingRowStyle BackColor="White" />
            <EditRowStyle BackColor="#2461BF" />
            <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
            <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
            <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
            <RowStyle BackColor="#EFF3FB" />
            <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
            <SortedAscendingCellStyle BackColor="#F5F7FB" />
            <SortedAscendingHeaderStyle BackColor="#6D95E1" />
            <SortedDescendingCellStyle BackColor="#E9EBEF" />
            <SortedDescendingHeaderStyle BackColor="#4870BE" />
            <Columns>
                <asp:TemplateField HeaderText="#">
                    <ItemTemplate>
                        <asp:CheckBox ID="CheckBox1" runat="server" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField HeaderText="Index" />
                <asp:BoundField HeaderText="Pet" DataField="Pet" />
                <asp:TemplateField HeaderText="Cost">
                    <ItemTemplate>
                        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:CommandField HeaderText="Save" ButtonType="Button" ShowSelectButton="true" ShowEditButton="false" ShowDeleteButton="false" SelectText="บันทึก" />
            </Columns>
        </asp:GridView>
    </div>
    </form>
</body>
</html>

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

using System.Data;

public partial class MyGridView : System.Web.UI.Page
{
    protected void Page_Init(object sender, EventArgs e)
    { 
        GridView1.SelectedIndexChanging += new GridViewSelectEventHandler(GridView1_SelectedIndexChanging);
        GridView1.RowDataBound += new GridViewRowEventHandler(GridView1_RowDataBound);
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        GridView1.AutoGenerateColumns = false;
        GridView1.DataSource = GetPetData();
        GridView1.DataKeyNames = new string[] { "ID" };
        GridView1.DataBind();
    }

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        DataRowView Drv = (DataRowView)e.Row.DataItem;

        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            e.Row.Cells[1].Text = (e.Row.RowIndex + 1).ToString();
            ((TextBox)e.Row.FindControl("TextBox1")).Text = Drv["Cost"].ToString();
        }
    }

    protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
    { 
        // update datebase here with
        // int datakey = (int)GridView1.DataKeys[e.NewSelectedIndex].Value;
    }

    protected DataTable GetPetData()
    {
        // สมมุติว่า query จาก database ตรงนี้แล้วกันนะ
        string[] Pet = new string[] { "Dog", "Cat", "Bird", "Fish", "Dinosaur" };
        int[] Cost = new int[] { 1000, 1500, 500, 120, 5000 };

        DataTable Dt = new DataTable();
        Dt.Columns.Add(new DataColumn("ID", typeof(int)));
        Dt.Columns.Add(new DataColumn("Pet", typeof(string)));
        Dt.Columns.Add(new DataColumn("Cost", typeof(int)));

        for (int i = 0; i < 5; i++)
        {
            DataRow Dr = Dt.NewRow();
            Dr["ID"] = i + 1;
            Dr["Pet"] = Pet[i];
            Dr["Cost"] = Cost[i];
            Dt.Rows.Add(Dr);
        }

        return Dt;
    }
}



ประวัติการแก้ไข
2010-09-17 20:24:21
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-09-17 20:18:38 By : tungman
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : เกิด error :: System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 02
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 อัตราราคา คลิกที่นี่