0

TextBox の編集時にデータ入力を検証するために、MaskedEditExtender でラップされた TextBox の「_」文字を置き換える必要があります。

            <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 データベースに送信する場所がわかりません。

4

2 に答える 2

1

更新を処理するデータソースがある場合、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, "_", "");
}
于 2013-05-24T20:50:05.133 に答える
1

問題は、行を選択してテキストボックスを取得するが、値を変更しないため、行を選択するときだと思います。

    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();
}

ただし、ここでは Character を置き換えて Label を入れるだけで、texbox は更新されません。

応援する

于 2013-05-24T20:40:54.723 に答える