views:

90

answers:

2

I added some textboxes to gridview using following code

<asp:TemplateField HeaderText="STD<br/>ID">
       <ItemStyle BackColor="LightBlue" />
          <ItemTemplate>
          <div style="font-size:xx-small; overflow:hidden;">
          <asp:TextBox ID="txtStandard" EnableViewState="true" Height="10" Font-Size="XX-Small" Width="50" Text='<%# bind("STANDARD_ID") %>' runat="server"></asp:TextBox>
       <asp:AutoCompleteExtender ID="AutoCompleteExtenderDemo" runat="server" 
            TargetControlID="txtStandard" ServiceMethod="GetCompletionList"
            MinimumPrefixLength="1" CompletionInterval="1000"
            EnableCaching="true" CompletionSetCount="20">
        </asp:AutoCompleteExtender>
                        </div>



                    </ItemTemplate>
                </asp:TemplateField>

I want to save updated values to database, But when I try to access values using

string strs = ((TextBox)TwoHeadedGridView1.Rows[0].FindControl("txtStandard")).Text;

It always returns me the blank value for all the rows, Same thing happens for dropdown list it returns me originally selected value i.e. value selected at the time of writing dropdown box, there are no duplicate ids present on my asp form , This is my first interaction with customizing gridview, I want to somehow make it run,

Can anybody suggest me any correction...

I did checked that any duplicate id is present in it or not,

A: 

Where are you trying to access those values? If you are accessing them in the RowUpdated function, the values will be blank. Access them during RowUpdating, and make sure to cancel the update.

Matthew Jones
I believe I am having an identical problem with a page I am working on and I am for sure accessing the values from the method that handles the `RowUpdating` event.
Rice Flour Cookies
+2  A: 

I found the solution to this problem here: http://www.eggheadcafe.com/software/aspnet/29602882/gridview--cant-get-text.aspx

Remember that the web page is fundamentally a stateless thing!

When your GridView fires an event, your Page_Load method executes and then the method that handles the GridView event executes. I still can't believe my eyes, but it seems that even if you manually assign the values from the GridView datasource to your TextBoxes, the value that the user typed in gets wiped out when the GridView.DataBind method executes.

In short, if your code is like mine, you have these two lines of code in your Page_Load method:

myGridView.DataSource = someDataSet;
myGridView.DataBind();

To solve this problem, change it to the following:

if (!IsPostBack)
{
myGridView.DataSource = someDataSet;
myGridView.DataBind();
}

By the way, I work in VB.net, so please do let me know that I converted to C# correctly for you. I want to hear that this works for you too!

Rice Flour Cookies