0

テキストボックスとドロップダウンを含むグリッドビューがあります。gvScheduleBattingScore_RowDataBound イベントでは、問題なくドロップダウンをバインドしています。ボタン コントロールは、グリッドビューの外側にあります。実際には、ボタンクリックイベントですべてのテキストボックス値とドロップダウン選択値をデータベースに送信したいのですが、どこが間違っているのかわかりません。問題は、テキストボックスにテキストが含まれておらず、例外が発生していることです

入力文字列は、正しい形式ではありませんでした。

私を助けてください...

<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();
                }
4

2 に答える 2

1

@bhooopendra.sahooとのチャット ディスカッションによると、これはバインディングの問題であるという結論に達しました。

ボタン クリック イベントが発生すると、GridViewバインドが再び問題を引き起こします。

修正は、 をGridView1 回だけバインドし、他のイベント中のバインドを制限することです。

于 2013-09-11T12:00:09.790 に答える