我有这个函数可以让我把数据放到gridview中,但我想检查文本框是否包含文本或数值
protected void grdContact_RowCommand(object sender, GridViewCommandEventArgs e)
{
DboDocument contact = new DboDocument();
if (e.CommandName.Equals("Insert"))
{
Label lblNewId_Riga = (Label)grdContact.FooterRow.FindControl("lblNewId_Riga");
TextBox txtNewQuantita = (TextBox)grdContact.FooterRow.FindControl("txtNewQuantita");
TextBox txtNewUnita_Misura = (TextBox)grdContact.FooterRow.FindControl("txtNewUnita_Misura");
TextBox txtNewDescrizione = (TextBox)grdContact.FooterRow.FindControl("txtNewDescrizione");
TextBox txtNewPrezzo_Unitario = (TextBox)grdContact.FooterRow.FindControl("txtNewPrezzo_Unitario");
TextBox txtNewIva = (TextBox)grdContact.FooterRow.FindControl("txtNewIva");
List<DettagliFattura> tmpDettagli = new List<DettagliFattura>();
if (Session["lst_dettagli"] != null)
{
tmpDettagli = (List<DettagliFattura>)Session["lst_dettagli"];
}
DettagliFattura Dettaglio = new DettagliFattura();
Dettaglio.quantita = Convert.ToInt32(txtNewQuantita.Text);
Dettaglio.unita_misura = txtNewUnita_Misura.Text;
Dettaglio.descrizione = txtNewDescrizione.Text;
Dettaglio.valore_unitario = Convert.ToDecimal(txtNewPrezzo_Unitario.Text);
Dettaglio.iva_percento = Convert.ToDecimal(txtNewIva.Text);
tmpDettagli.Add(Dettaglio);
Session["lst_dettagli"] = tmpDettagli;
FillGrid();
CalcolaTotale();
}
}
在这里,我想检查文本框是否填充了数字数据或文本数据,但我无法从自定义验证功能访问这些文本框
protected void ValidatoreTipiDato_ServerValidate(object source, ServerValidateEventArgs args)
{
//if txtNewDescrizione contains numeric data = Args.IsValid = false; etc
}
答案 0 :(得分:1)
您可以使用TextBox
参数获取args
的值:
protected void ValidatoreTipiDato_ServerValidate(object source, ServerValidateEventArgs args)
{
int x = int.MinValue;
int.TryParse(args.Value, out x);
if (x != int.MinValue)
{
// It is a number
}
else
{
// It is not a nuber
}
}
或者,如果您确实想要出于其他原因访问TextBox
,可以使用source
参数,在这种情况下,它是CustomValidator
对象,以访问其ControlToValidate
property:
protected void ValidatoreTipiDato_ServerValidate(object source, ServerValidateEventArgs args)
{
CustomValidator vc = source as CustomValidator;
TextBox txt = FindControl(vc.ControlToValidate) as TextBox;
if (txt != null)
{
int x = int.MinValue;
int.TryParse(txt.Text, out x);
if (x != int.MinValue)
{
// It is a number
}
else
{
// It is not a nuber
}
}
}
答案 1 :(得分:0)
您需要使用args参数来获取文本框值。 Taken from here
protected void ValidatoreTipiDato_ServerValidate(object source, ServerValidateEventArgs args)
{
try
{
// Test whether the value entered into the text box is even.
int i = int.Parse(args.Value);
args.IsValid = ((i%2) == 0);
}
catch(Exception ex)
{
args.IsValid = false;
}
}