Я хочу обновить и суммировать число параметров в моей базе данных ... Есть проблема ... Gridview - PullRequest
0 голосов
/ 15 марта 2019

Я хочу обновить количество голов, забитых игроком, поэтому, если он забил гол, я хочу обновить его количество голов ... Я получил ошибку в своем коде, и я не знаю, как ее исправить. Может кто-нибудь помочь мне исправить это, пожалуйста?

Мой код Asp.net:

            string connectionStr = @"Provider=Microsoft.Jet.OleDb.4.0;Data Source=|DataDirectory|\SoccerDataBase.mdb";
    using (OleDbConnection sqlCon = new OleDbConnection(connectionStr))
    {
        sqlCon.Open();
        string queryStr = "SELECT Achievement FROM SoccerAchievements WHERE UserID";
        OleDbCommand sqlCmd = new OleDbCommand(queryStr, sqlCon);
        sqlCmd.Parameters.AddWithValue("@AchNums", (SoccerTable.FooterRow.FindControl("txtAchNumsFooter") as TextBox).Text.Trim());
        OleDbDataAdapter dataAdapt = new OleDbDataAdapter(sqlCmd);
        DataSet ds = new DataSet();
        dataAdapt.Fill(ds, "SoccerAchievement");
        DataRow row = ds.Tables["SoccerAchievement"].Rows[0];
        int a = int.Parse((SoccerTable.FooterRow.FindControl("txtAchNumsFooter") as TextBox).Text.Trim());
        a = a + int.Parse("@AchNums");
        string query = "UPDATE SoccerAchievements SET Achievement= '" + a + "' WHERE UserID";
       sqlCmd.ExecuteNonQuery();

Мой HTML-код:

 <asp:GridView ID="SoccerTable" runat="server" AutoGenerateColumns="False" 
        BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" 
        CellPadding="3" DataSourceID="AccessDataSource1">
        <Columns>
            <asp:BoundField DataField="ID" HeaderText="קוד שחקן" InsertVisible="False" 
                SortExpression="ID" />
            <asp:BoundField DataField="Team" HeaderText="קבוצות" SortExpression="Team" />
            <asp:BoundField DataField="Players" HeaderText="שחקנים" 
                SortExpression="Players" />
                <asp:TemplateField HeaderText="הישגים">
                <ItemTemplate>
                    <asp:DropDownList ID="AchNums" runat="server"> 
                <asp:ListItem>1</asp:ListItem>
                <asp:ListItem>2</asp:ListItem>
                <asp:ListItem>3</asp:ListItem>
                <asp:ListItem>4</asp:ListItem>
                <asp:ListItem>5</asp:ListItem>
                <asp:ListItem>6</asp:ListItem>
                <asp:ListItem>7</asp:ListItem>
                <asp:ListItem>8</asp:ListItem>
                <asp:ListItem>9</asp:ListItem>
                <asp:ListItem>10</asp:ListItem>
                    </asp:DropDownList>
                </ItemTemplate>
                  <FooterTemplate>
                 <asp:TextBox ID="txtAchNumsFooter" runat="server" />
                    </FooterTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                <ItemTemplate>
                 <asp:Button class = "AddButton" ID="AddButton" runat="server" onclick="AddButton_Click" Text="עדכן" />
                </ItemTemplate>
                </asp:TemplateField>
        </Columns>

Моя проблема: входная строка была не в правильном формате. enter image description here

Пожалуйста, помогите мне, ребята: (

Ответы [ 2 ]

0 голосов
/ 15 марта 2019

@ Alex Это похоже на исключение формата в строке int a = int.Parse ((SoccerTable.FooterRow.FindControl ("txtAchNumsFooter") как TextBox) .Text.Trim ());.

В вашем случае возможно, что значение, возвращаемое текстовым полем, не является допустимым целочисленным значением.Вот почему вы получаете эту ошибку.

Можете ли вы попробовать отладить свой код и сделать быстрый просмотр этого оператора 'SoccerTable.FooterRow.FindControl ("txtAchNumsFooter") как TextBox) .Text.Trim ()'.Проверьте, что вы получаете.

0 голосов
/ 15 марта 2019

Если вы ищете значение по умолчанию 0 в пустом текстовом поле:

int i = string.IsNullOrEmpty((SoccerTable.FooterRow.FindControl("txtAchNumsFooter") as TextBox).Text.Trim()) ? 0 : int.Parse((SoccerTable.FooterRow.FindControl("txtAchNumsFooter") as TextBox).Text.Trim());

Если вы ищете значение по умолчанию 0 с любым плохо отформатированным вводом:

int i;
if (!int.TryParse((SoccerTable.FooterRow.FindControl("txtAchNumsFooter") as TextBox).Text.Trim(), out i)) i = 0;
...