日期:2014-05-18  浏览次数:20484 次

如何使gridview的某一行不可用或者使gridview的某一个单元格不可用(要考虑模板列),急啊,先谢谢大家了!!!
我在使用gridview时要实现这样一个功能,要使某一行显示不可用,但是随便怎么样都没试出来,还有我要使某一单元格显示不可用,而这个单元格是模板列,我也没有成功,哪位高手能指点一下啊,先谢了!!!

------解决方案--------------------

GridView1.Columns[0].Visible = false;

------解决方案--------------------
显示不可用是什么意思?是用户准备编辑时提示不可用呢?还是干脆把某些行或列隐藏起来不显示?
------解决方案--------------------
既然是不可用那肯定有个字段可以说吗的吧
把哪个字段读出来,但可以不要显示,在点击的时候取出来判断就可以了
------解决方案--------------------
以Northwind数据库的Products表为例,价格(UnitPrice)小于50的不显示,价格大于100的不允许编辑。

HTML code

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            DataKeyNames="ProductID" DataSourceID="SqlDataSource1" 
            onrowdatabound="GridView1_RowDataBound" onrowediting="GridView1_RowEditing">
            <Columns>
                <asp:CommandField ShowEditButton="True" />
                <asp:BoundField DataField="ProductID" HeaderText="ProductID" 
                    InsertVisible="False" ReadOnly="True" SortExpression="ProductID" />
                <asp:TemplateField HeaderText="ProductName" SortExpression="ProductName">
                    <ItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%# Bind("ProductName") %>'></asp:Label>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("ProductName") %>'></asp:TextBox>
                    </EditItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="UnitPrice" SortExpression="UnitPrice">
                    <ItemTemplate>
                        <asp:Label ID="LabelUnitPrice" runat="server" Text='<%# Bind("UnitPrice") %>'></asp:Label>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("UnitPrice") %>'></asp:TextBox>
                    </EditItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" 
            DeleteCommand="DELETE FROM [Products] WHERE [ProductID] = @ProductID" 
            InsertCommand="INSERT INTO [Products] ([ProductName], [UnitPrice]) VALUES (@ProductName, @UnitPrice)" 
            SelectCommand="SELECT [ProductID], [ProductName], [UnitPrice] FROM [Products]" 
            UpdateCommand="UPDATE [Products] SET [ProductName] = @ProductName, [UnitPrice] = @UnitPrice WHERE [ProductID] = @ProductID">
            <DeleteParameters>
                <asp:Parameter Name="ProductID" Type="Int32" />
            </DeleteParameters>
            <UpdateParameters>
                <asp:Parameter Name="ProductName" Type="String" />
                <asp:Parameter Name="UnitPrice" Type="Decimal" />
                <asp:Parameter Name="ProductID" Type="Int32" />
            </UpdateParameters>
            <InsertParameters>
                <asp:Parameter Name="ProductName" Type="String&qu