2

トリミングとは、次のような意味です。

名「ジョン」->「ジョン」にトリミング

姓「レノン」->「レノン」にトリミング

FormViewにこれらのテキストボックスがあり、Bind( "FirstName")を使用してプロパティでバインドしています。

FormViewはエンティティデータソースとバインドします。

保存する前にこれらの値をトリミングしたいのですが、これを行うための最良の方法は何ですか?

4

11 に答える 11

7
formView.Controls
    .OfType<System.Web.UI.WebControls.TextBox>()
    .ToList()
    .ForEach(t => t.Text = t.Text.Trim());
于 2012-05-17T08:42:31.767 に答える
4

これを試して:

TextBox.Text.Trim();
于 2012-05-17T08:39:23.240 に答える
0
String.Trim() //for triming

For saving the labor, what you can do is to create a helper method, and intercept it before any binding set.

I had once such similar scenario, where i need to log every SQL query (ExecuteReader, ExecuteNonQuery) with parameters.

What i simply did was to create a static method excepting IDBCommand. Then logged all the parameters in it. After that called the executed.

Example

public static CommandIntercepter 
{
  void ExecuteNonQuery(IDbCommand command)
  {
   ...//logged all parameters
   command.ExecuteNonQuery()
  }
 }

Now I had replaced command.ExecuteNonQuery, with CommandIntercepter.ExecuteNonQuery(command) through the code.

This way, i was saved from logging individual query parameters at different code points.

If you have such intercepting point inside Bind(String propertyName), you can do trimming there. Or You can create TrimBind function, and call TrimBind instead of Bind

void TrimBind(String propertyName)
{
  ...//do trimming
  Bind(propertyName);
}
于 2012-05-17T08:46:04.500 に答える
0

方法はあなたstring.Trim()が望むものです。

于 2012-05-17T08:36:03.550 に答える
0

テキストボックスのテキストをトリミングされたテキストに置き換えます。次に、テキストボックステキストからデータベースに保存するコードを記述します。このようにして、UIとバックエンドのテキストは同じになり、修正されます。

mytextbox.Text = mytextbox.Text.Trim();

//save textbox text in database  
于 2012-05-17T08:37:07.980 に答える
0

すべての答えに感謝..私はついにこれを思いつきました。

フォームビューでのトリミング

    protected void frmSubScription_ItemInserting(object sender, FormViewInsertEventArgs e)
    {
        Page.Validate("signUp");

        if (Page.IsValid == false)
        {
            e.Cancel = true;
        }

        // trimimg value
        for (int i = 0; i < e.Values.Count; i++)
        {
            e.Values[i] = e.Values[i].ToString().Trim();
        }         
    }

GridView でのトリミング

    protected void gdvSubscribers_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        // trimimg value
        for (int i = 0; i < e.NewValues.Count; i++)
        {
            if (e.NewValues[i] is string)
            {
                e.NewValues[i] = e.NewValues[i].ToString().Trim();
            }
        }        
    }
于 2012-05-17T11:34:02.160 に答える
0

テキストボックスが2つしかない場合は、使用できます

string firstName = txtFirstName.Text.Trim();
string lastName = txtLastName.Text.Trim();

使用するテキストボックスの数がわからない場合、またはテキストボックスが多数あり、複数のページであってもすべてをトリミングしたい場合は、TextBox の拡張プロパティを作成し、その Text プロパティをオーバーライドして、常にトリミングされた値を返すことをお勧めします。

于 2012-05-17T08:53:32.090 に答える
0

OnItemInsertingまたはOnItemUpdatingイベントを使用して、データソースに送信する前にデータをトリミングすることもできます

protected void ItemInsetring(object sender, FormViewInsertEventArgs e)
    {
        FormView fv = sender as FormView;
        foreach (FormViewRow r in fv.Controls[0].Controls)
        {
            foreach (TableCell cell in r.Controls)
            {
                foreach (TextBox txtin cell.Controls.OfType<TextBox>())
                {
                    txt.Text = txt.Text.Trim();
                }
            }
        } 
    }
于 2012-05-17T09:09:21.120 に答える
0

次のようなことができます。

private void TrimTextBoxes(DependencyObject depObject)
{
    if (depObject is TextBox)
    {
        TextBox txt = depObject as TextBox;
        txt.Text = txt.Text.Trim();
    }
    for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObject); i++)
    {
        TrimTextBoxes(VisualTreeHelper.GetChild(depObject, i));
    }
}

これにより、すべてのコントロールが繰り返されます。メイン グリッドに名前を付ける必要があります。この場合は<Grid x:Name="Grid1">です。その後、コード ビハインドでメソッドを呼び出します。

TrimTextBoxes(this.Grid1);

これにより、メイン グリッド内のすべてのテキスト ボックスがトリミングされます。それが役に立てば幸い

于 2012-05-17T09:12:47.717 に答える