#c# #asp.net #type-conversion
Вопрос:
Я работаю над проектом по администрированию пользователей в ASP.NET Веб-приложение (платформа 4.8), и я подумал, что мое представление сетки было бы более эффективным, если бы я превратил некоторые столбцы, которые раньше были текстовыми полями, в флажки.
Теперь, когда я собираюсь это сделать, он выдает мне: «Строка не была распознана как допустимое логическое значение». когда я преобразовал элементы. Так что же я делаю неправильно, преобразуя эти логические значения?
gvTestUsers_RowCommand
protected void gvTestUsers_RowCommand(object sender, GridViewCommandEventArgs e)
{
try
{
if (e.CommandName.Equals("AddNew"))
{
int tbl_users_key = 0;
TextBox myTxt;
CheckBox myCheck;
myTxt = ((TextBox)gvTestUsers.FooterRow.FindControl("txtNamefooter"));
string Name;
Name = myTxt.Text;
string CostCenter;
myTxt = ((TextBox)gvTestUsers.FooterRow.FindControl("txtCostCenterfooter"));
CostCenter = myTxt.Text;
string Employee;
myTxt = ((TextBox)gvTestUsers.FooterRow.FindControl("txtEmployeefooter"));
Employee = myTxt.Text;
Boolean FootPlate;
myCheck = ((CheckBox)gvTestUsers.FooterRow.FindControl("CheckFootPlateFooter"));
FootPlate = Convert.ToBoolean(myCheck.Text);
Boolean WirstCord;
myCheck = ((CheckBox)gvTestUsers.FooterRow.FindControl("CheckWirstCordFooter"));
WirstCord = Convert.ToBoolean(myCheck.Text);
Boolean Excluded;
myCheck = ((CheckBox)gvTestUsers.FooterRow.FindControl("txtExcludedfooter"));
Excluded = Convert.ToBoolean(myCheck.Text);
string Comment;
myTxt = ((TextBox)gvTestUsers.FooterRow.FindControl("txtCommentfooter"));
Comment = myTxt.Text;
string sMsg;
sMsg = "";
bool btest = fcEditTBL_USERS(tbl_users_key, Name, CostCenter, Employee, FootPlate, WirstCord, Excluded, Comment, ref sMsg, 0);
if (btest == false)
{
lblErrorMessage.Text = sMsg;
lblSuccessMessage.Text = " ";
return;
}
PopulateGridView();
lblSuccessMessage.Text = Name " Was Added To Record.";
}
}
catch (Exception ex)
{
lblSuccessMessage.Text = "";
lblErrorMessage.Text = ex.Message;
}
}
Комментарии:
1. У флажков есть свойство с именем Checked. это уже логическое значение и возвращает проверенное состояние флажка
Ответ №1:
Этот:
Boolean FootPlate;
myCheck = ((CheckBox)gvTestUsers.FooterRow.FindControl("CheckFootPlateFooter"));
FootPlate = Convert.ToBoolean(myCheck.Text);
должно быть:
Boolean FootPlate;
myCheck = ((CheckBox)gvTestUsers.FooterRow.FindControl("CheckFootPlateFooter"));
FootPlate = myCheck.Checked;
Вам не нужно конвертировать (.Text-это текст, связанный с флажком, а не значение true/false, если флажок установлен или нет)
.
Комментарии:
1. Большое спасибо, теперь я это понимаю. Отличное и простое объяснение!
Ответ №2:
Согласно вашему коду, следующий код неверен.
Boolean Excluded;
myCheck = ((CheckBox)gvTestUsers.FooterRow.FindControl("txtExcludedfooter"));
Excluded = Convert.ToBoolean(myCheck.Text);
В соответствии с вашим идентификатором txtExcludedfooter, это значение текстового поля или флажок?
Нужно это исправить.
Комментарии:
1. Спасибо, да, это должен быть флажок. Но он все равно не хочет передавать подножку, шнур или исключенное значение