我想在从数据库返回数据后修改文本值,我需要在数据网格中显示时修改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>
答案 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" />