Получить текст ячейки из DetailsView - PullRequest
0 голосов
/ 16 апреля 2011

У меня есть элемент управления DetailsView, который не присоединен к источнику данных, но заполнен хранимой процедурой.Кроме того, я не определяю никаких полей в разметке.У меня проблема с захватом текста ячейки во время события ItemUpdating.Например, я хочу извлечь текст из ячейки 1 из каждой из пяти строк и сохранить их в переменной, но каждый раз текст переменной возвращается на нуль.Любая помощь будет оценена.Ниже моя разметка, а затем код:

 <asp:DetailsView ID="goalsDetailsView" runat="server" AllowPaging="True" 
                            CssClass="mGrid" DataKeyNames="GoalID,TaskSetID" Height="50px" 
                            onitemcreated="goalsDetailsView_ItemCreated" 
                            onmodechanging="goalsDetailsView_ModeChanging" 
                            OnPageIndexChanging="goalsDetailsView_PageIndexChanging" Width="100%" 
                            onitemdeleting="goalsDetailsView_ItemDeleting" 
                            onitemupdating="goalsDetailsView_ItemUpdating">
                            <Fields>
                                <asp:CommandField ShowEditButton="True" ShowDeleteButton="True" />                                             
                            </Fields>

                        </asp:DetailsView>



protected void goalsDetailsView_ItemUpdating(object sender, DetailsViewUpdateEventArgs e)
    {
        //Accessing Edited values from the Details View            

        //grab the goalid and create a string guid
        string strgoalid = goalsDetailsView.Rows[0].Cells[1].Text; //GoalID
        Guid goalid = new Guid(strgoalid);

        //grab the tasksetid and create a string guid
        string strtasksetid = goalsDetailsView.Rows[1].Cells[1].Text; //TaskSetID
        Guid tasksetid = new Guid(strtasksetid);

        //grab goal text
        //string goal = ((TextBox)GoalsGridView.Rows[3].Cells[1].Controls[0]).Text; //Company
        string goal = goalsDetailsView.Rows[2].Cells[1].Text; 

        //grab task text            
        string Task1 = goalsDetailsView.Rows[3].Cells[1].Text; //Task 1
        string Task2 = goalsDetailsView.Rows[4].Cells[1].Text; //Task 2
        string Task3 = goalsDetailsView.Rows[5].Cells[1].Text; //Task 3
        string Task4 = goalsDetailsView.Rows[6].Cells[1].Text; //Task 4
        string Task5 = goalsDetailsView.Rows[7].Cells[1].Text; //Task 5



        UpdateOrAddNewRecord(goalid, tasksetid, Task1, Task2, Task3, Task4, Task5, goal, true); // call update method            
        BindDetailsView(); // Rebind GridView to reflect changes made
    }

1 Ответ

1 голос
/ 16 апреля 2011

Я сталкивался с этим в другом моем проекте; вы хотите получить его из аргумента DetailsViewUpdateEventArgs - он содержит все новые значения, представленные формой

string task1 = e.NewValue[3]; // etc

возможно, вы захотите привести значение в строку System.Convert.ToString(e.NewValue[3]); Старайтесь не использовать CStr ()!

Надеюсь, это поможет.

...