kiran kamble Ответов: 3

Как я могу решить это исключение indexoutofrange plz помогите мне


<asp:gridview id="Gridview1" runat="server" emptydatatext="Data is not available" onrowdatabound="Gridview1_RowDataBound" autogeneratecolumns="false">
    <columns>
        <asp:TemplateField HeaderText="ID">
            <itemtemplate>
                <asp:TextBox ID="txtID" runat="server" Text='<%#Eval("ID") %>' />
            
        
        <asp:TemplateField HeaderText="Quantity">
            <itemtemplate>
                <asp:TextBox ID="txtQuantity" runat="server" Text='<%#Eval("Quantity","0") %>' />
            
        
        <asp:TemplateField HeaderText="Rate">
            <itemtemplate>
                <asp:TextBox ID="txtRate" runat="server" Text='<%#Eval("Rate","0") %>' />
            
        
        <asp:TemplateField HeaderText="Total">
            <itemtemplate>
                <asp:TextBox ID="txtTotal" runat="server" Text='<%#Eval("Total","0") %>' />


Код CS
========
protected void Gridview1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        int index=0;

        //if (e.Row.RowType >= null)
        //{
            TextBox txtRate = (TextBox)Gridview1.Rows[index].Cells[1].FindControl("txtRate");
            TextBox txtQuantity = (TextBox)Gridview1.Rows[index].Cells[2].FindControl("txtQuantity");
            TextBox txtTotal = (TextBox)Gridview1.Rows[index].Cells[3].FindControl("Total");
            int R = int.Parse(txtRate.Text);
            int Q = int.Parse(txtQuantity.Text);
            int T = int.Parse(txtTotal.Text);

            T = Convert.ToInt32(R * Q);
            txtTotal.Text = T.ToString();
        //}
    }
}


Что я уже пробовал:

plz помогите мне с этим исключением как я могу справиться

3 Ответов

Рейтинг:
2

Kornfeld Eliyahu Peter

Конечно, лучше всего использовать ваш отладчик - он точно скажет вам, в чем и где проблема!!!
Что касается подсказки: вы индексируете строки и ячейки, но как вы можете быть уверены, что есть строки и ячейки?


Рейтинг:
1

Kats2512

вы должны попробовать что-то вроде этого и удалить код Gridview1. Rows[index] :

if ((e.Row.RowType == DataControlRowType.DataRow))
{
    TextBox txtRate = e.Row.FindControl("txtRate");
}


Я предполагаю, что с вашей индексной переменной что-то не так.


kiran kamble

да я тоже так стараюсь но он показывает исключение nullreference

kiran kamble

значения, поступающие на textboxs, но его выбрасывание nullreference, как я могу справиться с этим

Рейтинг:
0

CDP1802

Почему бы вам не использовать Google, чтобы посмотреть, что на самом деле означает это исключение? А затем вы внимательно посмотрите на свой код, чтобы исправить строку, откуда она взялась.

Вам даже не нужно догадываться, откуда берется исключение. Каждое исключение содержит так называемую трассировку стека, которая сообщает вам, откуда было вызвано исключение.