提问人:Steven Polka 提问时间:2/24/2021 最后编辑:Steven Polka 更新时间:2/24/2021 访问量:45
Gridview 无法解析输入字符串不正确
Gridview cannot parse input string is not correct
问:
本质上是试图在选中复选框时捕获信息,如果选中,则捕获输入的数量。附上代码。
<asp:TemplateField HeaderText="Quantity">
<ItemTemplate>
<asp:TextBox ID="TextboxQuantity" runat="server"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
这是我的 aspx.cs 代码。
//check to see if a check box is checked
for (int row = 0; row < gv_Input.Rows.Count; row++)
{
CheckBox Cbox = (CheckBox)gv_Input.Rows[row].FindControl("CheckboxSelect");
TextBox Tbox = (TextBox)gv_Input.Rows[row].FindControl("TextboxQuantity");
int quantity = Convert.ToInt32(Tbox.Text);
if (Cbox.Checked)
{
if (Tbox == null)
{
Response.Write("<script>alert('Fill in textbox')</script>");
}
else
{
Response.Write(
"<script>alert('Something was inputted into the textbox')</script>");
}
}
}
给出错误的行是这一行
int quantity = Convert.ToInt32(Tbox.Text);
错误: 输入字符串的格式不正确
答:
0赞
Dave Holden
2/24/2021
#1
即使文本框留空,测试也永远不会为真,因为您检查的是文本框的引用,而不是其内容。我相信你的测试应该是:if (Tbox == null)
if(Tbox == null || string.IsNullOrWhitespace(Tbox.Text) == true) {
评论
0赞
Steven Polka
2/24/2021
谢谢你!代码甚至不会走那么远,因为将文本框转换为 int 时出错。不过,我很感谢您的意见!
0赞
Dave Holden
2/24/2021
很高兴它有帮助。请记住在适当的时候给予信任,并接受或至少对帮助您解决问题的答案投赞成票。在您的解决方案中,您所做的只是通过删除整数转换来避免异常。相反,如果 Convert.ToInt32,则应使用 Int32.Tryparse() 来执行类型转换,如果用户输入的内容不是数字,则会引发异常。
1赞
Steven Polka
2/24/2021
我正在尝试,但我的声誉太低了
0赞
Steven Polka
2/24/2021
#2
通过进一步的测试。我尝试使用 foreach 循环,它似乎有效。谢谢你的帮助,这是我的解决方案
foreach (GridViewRow row in gv_Input.Rows)
{
CheckBox Cbox = (CheckBox)row.FindControl("CheckboxSelect");
TextBox Tbox = (TextBox)row.FindControl("TextboxQuantity");
if (Cbox.Checked)
{
if (Tbox.Text == null || string.IsNullOrEmpty(Tbox.Text) == true)
{
Response.Write("<script>alert('Fill in textbox')</script>");
}
else {
Response.Write("<script>alert('Successful find')</script>");
}
评论
int quantity = Convert.ToInt32("salmon");