Чтение данных из SqlDataSource или GridView

У меня есть SqlDataSource и GridView в веб-форме. GridView.DataSourceID = mySqlDataSource.

Когда я вызываю myGridView.DataBind(), все данные успешно привязываются к странице.

Как можно прочитать уже полученные данные из объектов mySqlDataSource или myGridView как DataTable или DataView? Спасибо


person ihorko    schedule 25.12.2010    source источник


Ответы (2)


Данные в представлении сетки можно прочитать с помощью свойства FindControl элемента управления Gridview. Например, для чтения значений, установленных в столбце Checkbox в сетке.

    for (i = 0; i < GridView1.Rows.Count; i++) 

{

            CheckBox chk = (CheckBox)GridView1.Rows[i].FindControl("checkbox1");

            //here code for using value captured in chk 
}
person user1333218    schedule 03.07.2012

Если ваш набор данных невелик, вы можете сохранить его в Session, связать GridView с данными Session, а затем повторно использовать данные Session в других ваших веб-объектах.

Тогда ваш код будет выглядеть примерно так (придется простить любые мелкие неточности — в данный момент я не работаю со своим ящиком для разработки):

protected override OnInit(object sender, EventArgs e)
{
    base.OnInit();

    if (Page.IsPostback == false)
    {
        SetSessionData();
    }
    //
    // Set your GridView, DataTable, DataView, etc. events here.
    //
}

void SetSessionData();
{
        List<YourDataBoundObject> myDataBoundObject = GetYourDataBoundObject(); // Or Collection<T>, IEnumerable<T>, etc.
        Session["data"] = myDataBoundObject;
}

void YourGridView_Load(object sender, EventArgs e)
{
    BindYourGridView();
}

void BindYourGridView()
{
    YourGridView.DataSource = GetSessionData();
    YourGridView.DataBind();
}

List<YourDataBoundObject> GetSessionData()
{
    return (List<YourDataBoundObject>) Session["data"];
}

void YourDataTable_Load(object sender, EventArgs e)
{
    BindYourDataTable();
}

void BindYourDataTable()
{
    YourDataTable.DataSource = GetSessionData();
    YourDataTable.DataBind();
}
person jwheron    schedule 26.12.2010