2013-09-11 3 views
0

У меня есть gridview, который содержит текстовые поля и выпадающие списки. В gvScheduleBattingScore_RowDataBound Событие Я являюсь обязательным выпадающим списком без каких-либо проблем. Кнопка управления находится вне растрового изображения. Я действительно хочу передать все значения текстового поля и вывести выбранные значения в базу данных по адресу buttonclickevent Но я не знаю, где я ошибаюсь. Проблема Текстовые файлы не содержат никакого текста, и я получаю исключениеКак извлечь текст текстового поля из gridview

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

Пожалуйста, помогите мне ...

<asp:GridView ID="gvScheduleBattingScore" runat="server" AllowSorting="false" AutoGenerateColumns="False" AllowPaging="false" 
       GridLines="None" CellPadding="1" CssClass="GridViewStyle" ShowFooter="false" width="100%" 
       OnRowDataBound="gvScheduleBattingScore_RowDataBound">     
        <Columns> 
         <asp:BoundField DataField="P_PlayerId" HeaderText="Player Id" HeaderStyle-Wrap="true" HeaderStyle-Width="5%" Visible="false"/> 
         <asp:BoundField DataField="PlayerName" HeaderText="Player Name" HeaderStyle-Wrap="true" HeaderStyle-Width="30%"/> 
         <asp:TemplateField HeaderText="Playing Order" HeaderStyle-Wrap="true" HeaderStyle-Width="5%"> 
          <ItemTemplate> 
           <asp:TextBox ID="txtPlayingOrder" runat="server" CssClass="TinyTexBox"></asp:TextBox> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField HeaderText="Status"> 
          <ItemTemplate> 
           <asp:TextBox ID="txtStatus" runat="server"></asp:TextBox> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField HeaderText="Bold By"> 
          <ItemTemplate> 
           <asp:DropDownList ID="ddlBoldBy" runat="server">      </asp:DropDownList> 
          </ItemTemplate> 
         </asp:TemplateField> 
        </Columns> 
       </asp:GridView> 
</br> 
<asp:Button ID="ButtonAdd" runat="server" Text="Add" CssClass="SmallButton" 
           ValidationGroup="Add" onclick="ButtonAdd_Click"/> 

На ButtonClick Событие:

protected void ButtonAdd_Click(object sender, EventArgs e) 
     { 
      SqlConnection dBConnection = null; 
      try 
      { 
       int playerId; 
       short plyerOrder; 
       string BatsmanStatus; 
       int boldBy; 

       dBConnection = new SqlConnection(); 
       dBConnection.ConnectionString = ConfigurationManager.ConnectionStrings["CriConn"].ConnectionString; 

       SqlDataAdapter dataAdapter = new SqlDataAdapter(); 
       SqlCommand cmd = new SqlCommand("SP_InsertScores", dBConnection); 
       cmd.CommandType = CommandType.StoredProcedure; 

       foreach (GridViewRow GVRow in gvScheduleBattingScore.Rows) 
       { 
        string textPlayerId = GVRow.Cells[0].Text; 
        TextBox textPlyerOrder = (TextBox)GVRow.Cells[1].FindControl("txtPlayingOrder"); 
        TextBox textBatsmanStatus = GVRow.Cells[2].FindControl("txtStatus") as TextBox; 
        DropDownList DropDownBoldBy = (DropDownList)GVRow.Cells[18].FindControl("ddlBoldBy"); 

playerId = Convert.ToInt32(textPlayerId); 
        if (!string.IsNullOrEmpty(textPlyerOrder.Text)) 
         plyerOrder = Convert.ToInt16(textPlyerOrder.Text); 
        if (!string.IsNullOrEmpty(textBatsmanStatus.Text)) 
         BatsmanStatus = textBatsmanStatus.Text; 
        if (!string.IsNullOrEmpty(DropDownBoldBy.SelectedValue) && DropDownLbwBy.SelectedValue != "Select") 
         boldBy = Convert.ToInt32(DropDownBoldBy.SelectedValue); 

         cmd.Parameters.Add("@PlayerId", SqlDbType.NVarChar).Value = playerId; 
cmd.Parameters.Add("@PlayerId", SqlDbType.Int).Value = playerId; 
cmd.Parameters.Add("@plyerOrder", SqlDbType.Int).Value = plyerOrder; 
cmd.Parameters.Add("@BatsmanStatus", SqlDbType.NVarChar).Value = BatsmanStatus; 

        dBConnection.Open(); 
        dataAdapter.InsertCommand = cmd; 
        cmd.ExecuteNonQuery(); 
        dBConnection.Close(); 
        } 
       } 
       catch (Exception ex) 
       { 
        throw ex; 
       } 
       finally 
       { 
        // Close data reader object and database connection 
        cmd.Dispose(); 
        cmd = null; 
        if (dBConnection.State == ConnectionState.Open) 
         dBConnection.Close(); 
       } 
+1

Можете ли вы сказать, где вы получаете точную ошибку .. – Sasidharan

+0

On ButtonAdd_Click Event Когда я назначаю текст локальным переменным. playerId = Convert.ToInt32 (textPlayerId); plyerOrder = Convert.ToInt16 (textPlyerOrder.Text); BatsmanStatus = textBatsmanStatus.Text; –

+0

Вам не хватает (.Text) в playerId = Convert.ToInt32 (textPlayerId); – Sasidharan

ответ

1

Согласно дискуссии чата с @ bhoopendra.sahoo, мы приходим к выводу, что это является обязательным вопросом.

При нажатии кнопки «Событие» событие GridView снова связывается, вызывая проблему.

Исправление состоит в том, чтобы связать GridView только один раз и ограничить его привязку во время других событий.

0

Добавить нулевую проверку перед преобразованием значение текстового поля в целое

if (!string.IsNullOrEmpty(textPlayerId.Text)) 
    playerId = Convert.ToInt32(textPlayerId); 

Рекомендуем также внесите эти изменения в код, чтобы найти элементы управления текстовыми полями в правильная клетка

TextBox textPlyerOrder = (TextBox)GVRow.Cells[2].FindControl("txtPlayingOrder"); 
TextBox textBatsmanStatus = (TextBox)GVRow.Cells[3].FindControl("txtStatus"); 
+0

@bhoopendra .sahoo - это разрешает проблему? – Bibhu

+0

Моя проблема: я получаю textPlyerOrder.Text И textBatsmanStatus.Text оба пустые. –

+0

@ bhoopendra.sahoo - обновил мой ответ – Bibhu

Смежные вопросы