0

I have some problems inserting a const "1" into a textbox which is gridview.

The gridview code:

<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" EnableViewState="False">
        <Columns>
        <asp:BoundField DataField="Price" HeaderText="Price" ItemStyle-CssClass="price" >

<ItemStyle CssClass="price"></ItemStyle>
            </asp:BoundField>

                         <asp:TemplateField HeaderText="ProductID">
                <ItemTemplate>
                    <asp:Label ID="lblID" runat="server" Text='<%# Eval("ProductID") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
             <asp:TemplateField HeaderText="ProductName">
                <ItemTemplate>
                    <asp:Label ID="lblName" runat="server" Text='<%# Eval("ProductName") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>

             <asp:TemplateField HeaderText="Summary">
                <ItemTemplate>
                    <asp:Label ID="lblSum" runat="server" Text='<%# Eval("Summary") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
             <asp:TemplateField HeaderText="picPath">
                <ItemTemplate>
                    <asp:Label ID="lblPic" runat="server" Text='<%# Eval("picPath") %>' ></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>

            <asp:TemplateField HeaderText = "quantity">
            <ItemTemplate>
                <asp:TextBox ID="lblquantity" runat="server" ></asp:TextBox>

            </ItemTemplate>
        </asp:TemplateField>

        <asp:TemplateField HeaderText = "Total">
            <ItemTemplate>
                <asp:Label ID="lblTotal" runat="server" ></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

All the information is populated from the session of the previous page, beside this textbox which doesn't comes from anywhere, it's a quantity textbox which the user should enter. And I want it to have a default value of "1".

I don't actually know how to insert into a textbox which is in the gridview.

Please help me.

Thanks

marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
dash
  • 65
  • 3
  • 10

3 Answers3

2

This may be because code is also checking for Header and footer template..

just put a null check before settings value...

TextBox tb = (TextBox)e.Row.FindControl("lblquantity");
if(tb!=null)
    tb.Text = Convert.ToString(123);

This will surely work...

Nikhil Gaur
  • 1,280
  • 3
  • 19
  • 40
1
<asp:TemplateField HeaderText = "quantity">
        <ItemTemplate>
            <asp:TextBox ID="lblquantity" runat="server" Text='<%# Eval("quantity") == DBNull.Value ? "1" : Eval("quantity").ToString()' ></asp:TextBox>
        </ItemTemplate>
</asp:TemplateField>

if quantity value is null in the table, then Text property will be default 1. Otherwise it will be quantity column in the table.

bselvan
  • 384
  • 1
  • 4
  • 14
1

You can put chis code in your GridView's RowDataBound event...

TextBox tb = (TextBox)e.Row.FindControl("lblquantity");
tb.Text = Convert.ToString(123);

I hope this helps...

Nikhil Gaur
  • 1,280
  • 3
  • 19
  • 40