在将单元格渲染到数据网格之前更改单元格的值

时间:2013-04-30 14:29:23

标签: c# asp.net gridview datagrid

我有一个我正在尝试编写的网络应用程序,它将获得打印机中剩余耗材的百分比。并显示友好的1-100%的数字。得到那个数字我必须将剩下的数乘以100然后除以总数。

我无法获取来自sql server表的数据并在将其呈现到数据gridview之前对其进行修改。任何帮助将不胜感激。

我已经尝试在后面的代码中将它转换为整数而没有运气。这是我的代码。

ASPX

<asp:GridView ID="GridView2" runat="server" AllowSorting="True" 
        AutoGenerateColumns="False" BackColor="#DEBA84" BorderColor="#DEBA84" 
        BorderStyle="None" BorderWidth="1px" CellPadding="3" CellSpacing="2" OnRowDataBound = "changeToPercent" 
        DataSourceID="SqlDataSource1" EnableModelValidation="True">
        <Columns>
            <asp:BoundField DataField="p_ipaddress" HeaderText="p_ipaddress" 
                SortExpression="p_ipaddress" />
            <asp:BoundField DataField="s_prtmarkerssuppliesdescription" 
                HeaderText="s_prtmarkerssuppliesdescription" 
                SortExpression="s_prtmarkerssuppliesdescription" />
            <asp:BoundField DataField="s_prtMarkersSuppliesLevel" 
                HeaderText="s_prtMarkersSuppliesLevel" 
                SortExpression="s_prtMarkersSuppliesLevel" />
        </Columns>
        <FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" />
        <HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" />
        <PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" />
        <RowStyle BackColor="#FFF7E7" ForeColor="#8C4510" />
        <SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" />
    </asp:GridView>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:XrxDBCWWConnectionString %>" 
        SelectCommand="usp_SUPPLYPERCENTAGE" SelectCommandType="StoredProcedure"
        CancelSelectOnNullParameter="False">
        <SelectParameters>
            <asp:ControlParameter ControlID="percentBox" DefaultValue="10" 
                Name="PCT_REQUESTED" PropertyName="Text" Type="Int32" />
            <asp:Parameter DefaultValue="" Name="PRINTER_ID" Type="String" />
        </SelectParameters>
    </asp:SqlDataSource>

我没有使用CS代码,因为我所尝试过的一切都惨遭失败

2 个答案:

答案 0 :(得分:0)

尝试连接GridView RowDataBound事件,您可以访问Row数据,并在绑定到网格视图之前更新它们。

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowdatabound.aspx

void GridView2_RowDataBound(Object sender, GridViewRowEventArgs e)
{

if(e.Row.RowType == DataControlRowType.DataRow)
{
  // Display the company name in italics.
  e.Row.Cells[1].Text = "<i>" + e.Row.Cells[1].Text + "</i>";

}

}

答案 1 :(得分:0)

对于过早的帖子感到抱歉。我放弃了完全编辑我的代码,所以我去了源代码并查看了存储过程,看看我是否可以在那里工作。碰巧你可以在SELECT语句中执行Mathmatical函数。

这是我在选择中添加的内容。

SELECT ((s_prtMarkersSuppliesLevel *100) / s.s_prtMarkersSuppliesMaxCapacity) as s_prtMarkersSuppliesLevel