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 替换了 body load 中的值,但是,这会打乱数据网格的排序并使新替换的值仍然出现在顶部,因为“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>

我想用值“UFP-1690B”和“UFP-1290B”替换 MBS 值。

有没有办法根据替换的值进行排序?还是我可以采取另一种方法?我试图做一些类似于你如何使用'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

从那以后已经一个月了,但我想我会为其他有类似问题的人添加一个最终答案。

我使用了 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 回答