Q:
次の問題があり、実際に修正する方法がわかりません。
grid view
列の1つがtemplate field
as(テキストボックス)です。グリッド ビューは8
行で構成されます。私がすることは、ユーザーがテキスト ボックスにデータを入力するたびに、合計を最後のテキスト ボックス (有効 = false に設定) に入れることです。テキスト ボックスのデータ エントリを何らかのメソッドで合計し、イベントで呼び出します。text changed
. しかし、テキストボックスに数字を入力してクリックするか、マウスカーソルを使用して次のボックスに移動するたびにTab in the keyboard
、フォーカスが失われ、目的のテキストボックスにマウスカーソルを再度配置する必要があります。
問題を解決するために次の方法を試しましたが、無駄でした。
foreach (GridViewRow r in gv_Evaluation.Rows)
{
((RadTextBox)r.Cells[3].FindControl("txt_evaluateWeights")).Attributes.Add("blur", "calc()");
}
私のページの読み込みでは、これはまったく機能しません。
protected void txt_evaluateWeights_TextChanged(object sender, EventArgs e)
{
calc();
((TextBox)sender).Focus();
}
このようにして、データを入力するために、フォーカスを入れたいテキストボックスではなく、前のテキストボックス(つまり、すでに行ったもの)にフォーカスを戻します。
編集:
私の計算方法:
private void calc()
{
float sum = 0;
for (int i = 0; i < 7; i++)
{
RadTextBox txt1 = (RadTextBox)gv_Evaluation.Rows[i].Cells[3].FindControl("txt_evaluateWeights");
int weight;
bool result = Int32.TryParse(txt1.Text, out weight);
if (result)
{
sum += weight;
}
}
double percentage;
percentage = Math.Round((sum / 100) * 100, 2);
RadTextBox txt3 = (RadTextBox)gv_Evaluation.Rows[7].Cells[3].FindControl("txt_evaluateWeights");
txt3.Text = percentage.ToString();//string.Format("{0:0.0%}", percentage.ToString());
}