0

データベースからデータが返された後にテキスト値を変更したいのですが、MBS1270 と MBS1263 を変更して、データグリッドに表示されたときに他のものと同じように見えるようにする必要があります。

SelectCommand="SELECT PartNumber as 'Part Number', OnhandStockLevel as 'In Stock', DueIn as 'In Production' FROM vw_Rb_FreeStock WHERE PartNumber = 'UFP-0390B' OR PartNumber = 'UFP-0690B' OR PartNumber = 'MBS1270' OR PartNumber = 'MBS1263'">

ここで、javascript を使用してボディ ロードの値を置き換えましたが、これによりデータグリッドの並べ替えが台無しになり、新しい置き換えられた値が一番上に表示されます。これは、「M」が「U」の前に来て、まだ並べ替えられているためです。古い値に基づいています。

Javascript:

 <script type="text/javascript">
    function modText(original, replace) {
        alert("Hello");
        var find = original;
        var repl = replace;
        var page = document.body.innerHTML;
        while (page.indexOf(find) >= 0) {
            var i = page.indexOf(find);
            var j = find.length;
            page = page.substr(0, i) + repl + page.substr(i + j);
            document.body.innerHTML = page;
        }
</script>

MBS 値を値「UFP-1690B」および「UFP-1290B」に置き換えたいと考えています。

置換された値に基づいて並べ替える方法はありますか? または、私が取ることができる別のアプローチはありますか?「AS」SQL関数を使用して列ヘッダーを置き換える方法と同様のことを試みましたが、失敗しました。そのようなことは完璧です。

いいえ、生のデータベース値を変更することはできません。

グリッドビュー コード:

            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
                BackColor="White" BorderColor="#999999" BorderStyle="None" BorderWidth="1px" 
                CellPadding="3" CssClass="style1" DataKeyNames="Part Number" 
                DataSourceID="SqlDataSource1" GridLines="Vertical">
                <RowStyle BackColor="#EEEEEE" ForeColor="Black" />
                <Columns>
                    <asp:BoundField DataField="Part Number" HeaderText="Part Number" 
                        ReadOnly="True" SortExpression="Part Number" />
                    <asp:BoundField DataField="In Stock" DataFormatString="{0:0}" 
                        HeaderText="In Stock" SortExpression="In Stock" />
                    <asp:BoundField DataField="In Production" DataFormatString="{0:0}" 
                        HeaderText="In Production" ReadOnly="True" SortExpression="In Production" />
                </Columns>
                <FooterStyle BackColor="#CCCCCC" ForeColor="Black" />
                <PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
                <SelectedRowStyle BackColor="#008A8C" Font-Bold="True" ForeColor="White" />
                <HeaderStyle BackColor="#000084" Font-Bold="True" ForeColor="White" />
                <AlternatingRowStyle BackColor="#DCDCDC" />
            </asp:GridView>
4

2 に答える 2

1

これから1か月が経ちましたが、同様の問題を抱えている他の人のために最終的な回答を追加すると思いました.

SQL REPLACE 関数を使用しました。http: //msdn.microsoft.com/en-us/library/ms186862.aspxを参照してください。

その後、UNION を使用して元のデータと置き換えられたデータを結合しました。

最終的なコード:

SELECT REPLACE(REPLACE(PartNumber, 'MBS1269', 'UFP-1290S'), 'MBS1262', 'UFP-1690S') AS PartNumber... (and so on)

出力は完全に完璧でした。

于 2012-11-09T11:30:11.687 に答える
0

RowDataBoundイベントで試すことができます

void GridView_RowDataBound(Object sender, GridViewRowEventArgs e)
{
    if(e.Row.RowType == DataControlRowType.DataRow)
    {
        e.Row.Cells[1].Text = e.Row.Cells[1].Text.Replace("MBS","UFP");
    }
}

これをグリッドに追加できます

<asp:gridview onrowdatabound="GridView_RowDataBound" />
于 2012-09-26T12:02:56.490 に答える