2013-05-24 3 views
0

Мне нужно заменить символ «_» из моего TextBox, который был поврежден с помощью MaskedEditExtender для проверки ввода данных при редактировании TextBox.Обновление строки GridView в режиме редактирования из текстового поля

  <asp:MaskedEditExtender ID="TextBox1_MaskedEditExtender" runat="server" 
       CultureAMPMPlaceholder="" CultureCurrencySymbolPlaceholder="" 
       CultureDateFormat="" CultureDatePlaceholder="" CultureDecimalPlaceholder="" 
       CultureThousandsPlaceholder="" CultureTimePlaceholder="" Enabled="True" 
       InputDirection="RightToLeft" Mask="9999.9" MaskType="Number" 
       TargetControlID="TextBox1" ClearTextOnInvalid="False> 
      </asp:MaskedEditExtender> 

Когда я пытаюсь редактировать строку. Значение текстового поля - «__12.4». В GridView1_RowUpdating я пытаюсь заменить «_» на «» без каких-либо результатов.

 protected void GridView1_RowUpdating(object sender, System.Web.UI.WebControls.GridViewUpdateEventArgs e) 
    { 

     TextBox Textbox1 = (TextBox)GridView1.Rows[e.RowIndex].FindControl("Textbox1 "); 
     Label Label2 = new Label(); 
     Label2.Text = TextBox1.Text.Replace("_", ""); 
     GridView1.DataBind(); 
    } 

Мой TemplateField выглядит следующим образом

 <asp:TemplateField HeaderText="Decimal Value" SortExpression="DecimalValue"> 
     <EditItemTemplate> 
      <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("DecimalValue","{0:F1}") %>' Height="20px" MaxLength="6" Width="40px"></asp:TextBox> 
      <%-- Formated to display 9999.9 per requirement --%> 
      <asp:MaskedEditExtender ID="TextBox1_MaskedEditExtender" runat="server" 
       CultureAMPMPlaceholder="" CultureCurrencySymbolPlaceholder="" 
       CultureDateFormat="" CultureDatePlaceholder="" CultureDecimalPlaceholder="" 
       CultureThousandsPlaceholder="" CultureTimePlaceholder="" Enabled="True" 
       InputDirection="RightToLeft" Mask="9999.9" MaskType="Number" 
       TargetControlID="TextBox1" ClearTextOnInvalid="False"> 
      </asp:MaskedEditExtender> 

     </EditItemTemplate> 
     <ItemTemplate> 
      <asp:Label ID="Label2" runat="server" Text='<%# Bind("DecimalValue", "{0:F1}") %>'></asp:Label> 
     </ItemTemplate> 
    </asp:TemplateField> 

Я не знаю, где, чтобы обновить значение TextBox1.Text после строки является обновлением и отправить на базу данных MS SQL.

ответ

1

Я думаю, что проблема в том, когда вы выбираете строку, becouse вы выбираете строку, принять текстовое поле, но никогда не изменить значение:

protected void GridView1_RowUpdating(object sender, System.Web.UI.WebControls.GridViewUpdateEventArgs e) 
{ 

    TextBox Textbox1 = (TextBox)GridView1.Rows[e.RowIndex].FindControl("Textbox1 "); 
    Label Label2 = new Label(); 
    Label2.Text = GridView1.Text.Replace("_", ""); 
    GridView1.DataBind(); 
} 

Я думаю, это (см код ниже)

protected void GridView1_RowUpdating(object sender, System.Web.UI.WebControls.GridViewUpdateEventArgs e) 
{ 

    TextBox Textbox1 = (TextBox)GridView1.Rows[e.RowIndex].FindControl("Textbox1 "); 
    Label Label2 = new Label(); 
    Label2.Text = Textbox1.Text.Replace("_", ""); //Replace Gridview for the text box 
    GridView1.DataBind(); 
} 

Но здесь вы замените персонажа и поместите его в ярлык, он не будет обновлять texbox.

Cheer

+0

@Framk_Droid Спасибо, я редактирую орфографический контроль. Я не уверен, как я могу добраться до этого текстового поля после обновления строки и проверить, что находится в свойстве Text. Это то, что строка ошибки не в правильном формате после обновления, она должна быть без символа «_», тогда это будет ОК – laspalmos

+0

Возможно, что erros это, потому что вам нужно сделать 'double.Parse (Textbox1.Text.Replace (" _ " , "") .ToString()); 'Почему? потому что вы пытаетесь поместить строку без приведения в двойное поле. Наверное, это проблема. –

1

вам не нужно ваше GridView привязки в RowUpdating, если у вас есть источник данных обработки обновлений для вас, вы можете попробовать это и посмотреть, что происходит?

protected void GridView1_RowUpdating(object sender, System.Web.UI.WebControls.GridViewUpdateEventArgs e) 
{ 
    TextBox Textbox1 = (TextBox)GridView1.Rows[e.RowIndex].FindControl("Textbox1"); 
    Textbox1.Text = Regex.Replace(Textbox1.Text, "_", ""); 
} 
+0

Спасибо. Это решение заменяет символ «_» при отладке, но я получил ошибку после того, как строка обновлена ​​о том, что строка не находится в правильном формате. Как я мог видеть значение свойства Text после обновленного события. – laspalmos

+0

какая строка не в правильном формате? можете ли вы опубликовать ошибку более подробно? – Emre

Смежные вопросы