0

GridViewTextBoxLabel内部にとがあります。私の問題は、GridViewを更新し、TextBoxが空の場合、ラベル内のデータを削除することです(これは理にかなっています)。私の質問は、TextBoxデータを失うことなく空のままにして更新することは可能ですか?

c#:

Private void Update()
    {
        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < GridView1.Rows.Count; i++)
        {
            TextBox timeR = GridView1.Rows[i].FindControl("SitUps") as TextBox;
            if (timeR.Text.Length < 10)
            {
                foreach (GridViewRow row in GridView1.Rows)
                {
                    sb.Append("UPDATE bleaTest SET SitUps = '");
                    sb.Append((row.FindControl("SitUps") as TextBox).Text);
                    sb.Append("'");
                    sb.Append(" WHERE id = ");
                    sb.Append(Convert.ToInt32((row.FindControl("ID") as Label).Text));
                    sb.Append(" ");

                }
            }
            else
            {
                timeR.Text = "Number is too high!";
                foreach (GridViewRow row in GridView1.Rows)
                {
                    sb.Append("UPDATE bleaTest SET SitUps = '");
                    sb.Append((row.FindControl("SitUps") as TextBox).Text);
                    sb.Append("'");
                    sb.Append(" WHERE id = ");
                    sb.Append(Convert.ToInt32((row.FindControl("ID") as Label).Text));
                    sb.Append(" ");

                }

            }
        }



        string connectiongString = "Data Source=WSCJTCSQ1;Initial Catalog=TestDB;Persist Security Info=True;User ID=v2soft;Password=passwordv2soft";
        SqlConnection myConnection = new SqlConnection(connectiongString);
        SqlCommand myCommand = new SqlCommand(sb.ToString(), myConnection);
        myConnection.Open();
        myCommand.ExecuteNonQuery();
        myConnection.Close();
        BindData();
        }

aspx:

 <asp:TemplateField HeaderText="Sit Ups">
        <ItemTemplate>
            <asp:TextBox ID="SitUps" runat="server" type="number" Text='<%# Eval("SitUps") %>' EnableViewState="True"></asp:TextBox></div>

        </ItemTemplate>
    </asp:TemplateField>
4

2 に答える 2

1

あなたはに変更if (timeR.Text.Length < 10)することができますif (timeR.Text.Length < 10 and timeR.Text.Length > 0)

于 2012-11-28T21:07:44.317 に答える
0

私はここに問題があることを理解しました:コードは次のとおりです。

StringBuilder sb = new StringBuilder();


                foreach (GridViewRow row in GridView1.Rows)
                {
                    TextBox tR = row.FindControl("SitUps") as TextBox;
                    if(tR.Text != "")
                    {
                    sb.Append("UPDATE bleaTest SET SitUps = '");
                    sb.Append((row.FindControl("SitUps") as TextBox).Text);
                    sb.Append("'");
                    sb.Append(" WHERE id = ");
                    sb.Append(Convert.ToInt32((row.FindControl("ID") as Label).Text));
                    sb.Append(" ");
                    string connectiongString = "Data Source=WSCJTCSQ1;Initial Catalog=TestDB;Persist Security Info=True;User ID=v2soft;Password=passwordv2soft";
                    SqlConnection myConnection = new SqlConnection(connectiongString);
                    SqlCommand myCommand = new SqlCommand(sb.ToString(), myConnection);
                    myConnection.Open();
                    myCommand.ExecuteNonQuery();
                    myConnection.Close();

                    }

                }
        BindData();
        }

コードをクリーンアップすると、テキストがnullでないかどうかがチェックされ、更新が続行されます。

ありがとうございました!

于 2012-11-28T21:39:15.423 に答える