修改SELECT命令返回的datagrid中的文本值

时间:2012-09-26 11:16:31

标签: javascript asp.net datagrid replace selectcommand

我想在从数据库返回数据后修改文本值,我需要在数据网格中显示时修改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函数替换列标题,但失败了,类似的东西将是完美的。

不,我无法更改原始数据库值。

Gridview代码:

            <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>

2 个答案:

答案 0 :(得分: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)

输出绝对完美。

答案 1 :(得分: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" />