При просмотре таблицы не удалось добавить итог в ячейку - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь добавить общий итог в нижний колонтитул gridview, но я получаю следующие ошибки.

Введенная строка была в неправильном формате.

В этом строка, в которой происходит ошибка.

totalAmount += Convert.ToInt32(DataBinder.Eval(e.Row.DataItem,"Salary"));

Вот код html.

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
        BackColor="LightGoldenrodYellow" BorderColor="Tan" BorderWidth="1px" OnRowDataBound="GridView1_RowDataBound" ShowFooter="True" >
        <AlternatingRowStyle BackColor="PaleGoldenrod" />
                <Columns>
                    <asp:TemplateField HeaderText="First_Name">
                        <EditItemTemplate>
                            <asp:Label ID="First_Name" runat="server" Text='<%# Eval("First_Name")%>'></asp:Label>
                        </EditItemTemplate>
                        <ItemTemplate>
                            <asp:Label ID="Label1" runat="server" Text='<%# Bind("First_Name")%>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Last_Name">
                        <EditItemTemplate>
                            <asp:TextBox ID="Last_Name" runat="server" Text='<%# Bind("Last_Name")%>' Width="100px"></asp:TextBox>
                        </EditItemTemplate>
                        <ItemTemplate>
                            <asp:Label ID="Label2" runat="server" Text='<%# Bind("Last_Name")%>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Title">
                        <EditItemTemplate>
                            <asp:Label ID="First_Name" runat="server" Text='<%# Eval("Title")%>'></asp:Label>
                        </EditItemTemplate>
                        <ItemTemplate>
                            <asp:Label ID="Label1" runat="server" Text='<%# Bind("Title")%>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Location">
                        <EditItemTemplate>
                            <asp:TextBox ID="Last_Name" runat="server" Text='<%# Bind("Location")%>' Width="100px"></asp:TextBox>
                        </EditItemTemplate>
                        <ItemTemplate>
                            <asp:Label ID="Label2" runat="server" Text='<%# Bind("Location")%>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Type Contract">
                        <EditItemTemplate>
                            <asp:Label ID="First_Name" runat="server" Text='<%# Eval("Type_Contract")%>'></asp:Label>
                        </EditItemTemplate>
                        <ItemTemplate>
                            <asp:Label ID="Label1" runat="server" Text='<%# Bind("Type_Contract")%>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Salary">
                        <EditItemTemplate>
                            <asp:TextBox ID="Last_Name" runat="server" Text='<%# Bind("Salary")%>' Width="100px"></asp:TextBox>
                        </EditItemTemplate>
                        <ItemTemplate>
                            <asp:Label ID="Label2" runat="server" Text='<%# Bind("Salary")%>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                      </Columns>
        </asp:GridView>

Вот код, лежащий в основе.

public partial class TotalPaymnet : System.Web.UI.Page
    {
       int totalAmount = 0;

        protected void Page_Load(object sender, EventArgs e)
        {

            JobHandler jh = new JobHandler();
            GridView1.DataSource = jh.GetStudentJobRecord();
            GridView1.DataBind();


        }

        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {


            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                totalAmount += Convert.ToInt32(DataBinder.Eval(e.Row.DataItem,"Salary"));

            }
            // Display totals in the gridview footer
            else if (e.Row.RowType == DataControlRowType.Footer)
            {
                e.Row.Cells[1].Text = "Grand Total";
                e.Row.Cells[1].Font.Bold = true;
                e.Row.Cells[5].Text = totalAmount.ToString();
                e.Row.Cells[5].Font.Bold = true;
            }
        }
    }
}

Вот код Результат при запуске приложений.

enter image description here

...