确定Gridview单元格值 [英] Determine Gridview Cell Value

查看:72
本文介绍了确定Gridview单元格值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我无法确定SelectedRow,因此无法确定计算gridviewTotal列所需的单元格值。



我从一个从SqlDataReader创建的数据表中填充gridview。它适当地填充,但我得到gvEquipment.SelectedRow= -1和gvEquipment.Rows [4] .Cells [3] .Text =。 (所有.TEXT值都是空白。)





 <   asp:GridView     ID   =  gvEquipment    runat   =  server    AutoGenerateColumns   =  False    EnableModelValidation   =   True  

高度 = 150px 样式 = margin-right:1px < span class =code-keyword>>
< >
< asp:TemplateField HeaderText = 设备ID 可见 = False >
< ItemTemplate >
< asp:TextBox ID = txtEquipID runat = server ReadOnly = True 文本 =' <% #DataBinder.Eval(Container.DataItem, 装备ID%> '

宽度 = < span class =code-keyword> <% 30 %> > < / asp:TextBox >
< / ItemTemplate >
< HeaderStyle 宽度 = 125px / >
< / asp:TemplateField >
< asp:TemplateField HeaderText = 总计# >
< ItemTemplate >
< asp:TextBox < span class =code-attribute> ID = txtEquipCnt runat = server 文字 =' <% #DataBinder.Eval(Container.DataItem, Total#%> '

< span class =code-attribute> 宽度 = <% 25 %>

< span class =code-attribute> AutoPostBack = True <跨度类= 代码属性> ontextchanged <跨度类= 代码关键字> = <跨度类= 代码关键字 > txtEquipCnt_TextChanged < span class =code-keyword>> < / asp:TextBox < span class =code-keyword>>
< / ItemTemplate >
< HeaderStyle 宽度 = 40px / >
< / asp:TemplateField >
< asp:TemplateField HeaderText = 设备 >
< ItemTemplate >
< asp:TextBox ID = txtEquipDesc runat = server ReadOnly = True 文字 =' <%#DataBinder.Eval(Container.DataItem, EquipDesc%> '

< span class =code-attribute> 宽度 = <% 110 < span class =code-pagedirective>%> > < / asp:TextBox >
< / ItemTemplate >
< HeaderStyle 宽度 = 130px / >
< / asp:TemplateField >
< asp:TemplateField HeaderText = 费用/小时 >
< ItemTemplate >
< asp:TextBox ID = txtEquipCharge runat = 服务器 ReadOnly = True 文字 =' <%#String.Format( {0,0:N2},DataBinder.Eval(Container.DataItem, CostPerHour))% > '

< span class =code-attribute> 宽度 = <% 55 %> < span class =code-keyword>> < / asp:TextBox < span class =code-keyword>>
< / ItemTemplate >
< HeaderStyle 宽度 = 40px / >
< / asp:TemplateField >
< asp:TemplateField HeaderText = 总费用 >
< ItemTemplate >
< asp:TextBox < span class =code-attribute> ID
= txtEquipCost runat = server ReadOnly = True 文字 =' <%字符串 .Format( {0:0,0.00},DataBinder.Eval(Container.DataItem, EquipCost))%> '

< span class =code-attribute> 宽度 = <% 75 %> ; > < / asp:TextBox >
< / ItemTemplate >
< HeaderStyle 宽度 = 100px / >
< / asp:TemplateField >
< /列 >
< / asp:GridView >







.cs:

  protected   void  Page_Load( object  sender,EventArgs e)
{
if (!IsPostBack)
{
EquipCost(); // 从Datatable加载gridview。

}
}

解决方案

由于单元格内的控制,还有另一层必须进行评估。以下检索单元格的内容:



字符串t1 =((TextBox)(gvAssgnSmry.Rows [0] .Cells [1] .Controls [1]) )。文字;



(这是一个不同的gridview(gvAssgnSumry vs gvEquipment,但校长是一样的)



我没有 控件[1]

DataRowView的DRV =(数据网格的名称)作为.CurrentCell.Item DataRowView的;



您应该能够将代码行附加到您选择的事件处理程序。



然后,引用此中的各个值方式:



drv.Row [0](零表示你要选择哪一列)


I am unable to determine the "SelectedRow" and consequently the cell values needed to calculate the "Total" column of the gridview.

I populate the gridview from a datatable created from a "SqlDataReader". It populates appropriately, but I get "gvEquipment.SelectedRow" = -1 and gvEquipment.Rows[4].Cells[3].Text= "". (All of the .TEXT values are blank.)


<asp:GridView ID="gvEquipment" runat="server" AutoGenerateColumns="False" EnableModelValidation="True"

     Height="150px" Style="margin-right: 1px">
    <Columns>
        <asp:TemplateField HeaderText="Equipment ID" Visible="False">
            <ItemTemplate>
                <asp:TextBox ID="txtEquipID" runat="server" ReadOnly="True" Text='<%# DataBinder.Eval(Container.DataItem, "Equip ID") %>'

                    Width="<%# 30 %>"></asp:TextBox>
            </ItemTemplate>
            <HeaderStyle Width="125px" />
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Total #">
            <ItemTemplate>
                <asp:TextBox ID="txtEquipCnt" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Total #") %>'

                    Width="<%# 25 %>"

                    AutoPostBack="True" ontextchanged="txtEquipCnt_TextChanged"></asp:TextBox>
            </ItemTemplate>
            <HeaderStyle Width="40px" />
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Equipment">
            <ItemTemplate>
                <asp:TextBox ID="txtEquipDesc" runat="server" ReadOnly="True" Text='<%# DataBinder.Eval(Container.DataItem, "EquipDesc") %>'

                    Width="<%# 110 %>"></asp:TextBox>
            </ItemTemplate>
            <HeaderStyle Width="130px" />
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Cost/Hour">
            <ItemTemplate>
                <asp:TextBox ID="txtEquipCharge" runat="server" ReadOnly="True" Text='<%#String.Format("{0, 0:N2}", DataBinder.Eval(Container.DataItem, "CostPerHour")) %>'

                    Width="<%# 55 %>" ></asp:TextBox>
            </ItemTemplate>
            <HeaderStyle Width="40px" />
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Total Cost">
            <ItemTemplate>
                <asp:TextBox ID="txtEquipCost" runat="server" ReadOnly="True" Text='<%# String.Format("{0:0,0.00}", DataBinder.Eval(Container.DataItem, "EquipCost")) %>'

                    Width="<%# 75 %>"></asp:TextBox>
            </ItemTemplate>
            <HeaderStyle Width="100px" />
        </asp:TemplateField>
    </Columns>
</asp:GridView>




.cs:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        EquipCost();  //Loads gridview from Datatable.

    }
}

解决方案

Because of the control within the cell, there is another layer which must be evaluated. The following retrieves the contents of the cell:

String t1 = ((TextBox)(gvAssgnSmry.Rows[0].Cells[1].Controls[1])).Text;

(It''s a different gridview (gvAssgnSumry vs gvEquipment, but the principal is the same)

I did not have the "Controls[1]".


DataRowView drv = (Name of DataGrid).CurrentCell.Item as DataRowView;

You should be able to attach the line of code to the event handler of your choice.

Then, reference individual values in this manner:

drv.Row[0] (Zero indicates which column you want to select)


这篇关于确定Gridview单元格值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆