Javascript 修改SELECT命令返回的datagrid中的文本值
我想在从数据库返回数据后修改文本值,我需要修改MBS1270和MBS1263,使其在datagrid中显示时与其他的一样Javascript 修改SELECT命令返回的datagrid中的文本值,javascript,asp.net,datagrid,replace,selectcommand,Javascript,Asp.net,Datagrid,Replace,Selectcommand,我想在从数据库返回数据后修改文本值,我需要修改MBS1270和MBS1263,使其在datagrid中显示时与其他的一样 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' O
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中的值,但是,这打乱了datagrid的排序,使新替换的值仍然显示在顶部,因为'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>
功能模块文本(原件,替换){
警惕(“你好”);
var find=原始;
var repl=替换;
var page=document.body.innerHTML;
while(page.indexOf(find)>=0){
var i=页面索引(查找);
var j=find.length;
page=page.substr(0,i)+repl+page.substr(i+j);
document.body.innerHTML=页面;
}
我想用值“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>
您可以尝试使用
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" />
一个月过去了,但我想我应该为其他有类似问题的人添加一个最终答案 我使用了SQL替换函数,请参见: 之后,我使用UNION将原始数据与替换的数据组合在一起 最终代码:
SELECT REPLACE(REPLACE(PartNumber, 'MBS1269', 'UFP-1290S'), 'MBS1262', 'UFP-1690S') AS PartNumber... (and so on)
输出非常完美。放置网格的代码,这样我们就可以了解您的意思。@Charlie:MBS1270/'MBS1263'被更改为什么?您也可以发布javascript代码吗?@Daredev用这两部分信息更新了主帖。@Charlie:您能负担得起将结果更新到一个临时表中,然后将其用作您的源吗GridView?可能不是,数据库是只读的。非常棒,这让我不用再使用javascript了,谢谢。但是它仍然没有被排序,这对公司来说是至关重要的:/你有什么建议吗?我查看了GridView.sort事件,但我看到的示例都必须重新查询数据库,这会再次弄乱值。或者如果sorting是不可能的,我能强迫所选的值保持在某个位置/索引吗?谢谢Charlie,我很乐意帮助你,是的,排序是可能的,阅读这篇文章msdn,你有完整的示例:我根本不理解整个表达式参数…sortlist1来自哪里,它存储了什么?