سؤال

ولدي GridView ربط بيانات في asp.net 2.0 مع وصلة صف الاختيار. عند تحديد صف واحد، وأود أن أضيف برمجيا صف الجدول أدناه الصف المحدد، من أجل عش شبكة آخرون آخر.

وأنا أقوم بالبحث هذا لعميل وللمقال، وأنا أعتقد أن بلدي جوجل فو ليست هذه الليلة قوية. أي اقتراحات؟

وتحرير: أنا فعلا حل العمل ولكن كان nutted البصرية ستوديو يصل بطريقة أو بأخرى. إغلاق وإعادة فتح VS وإعادة بناء كل شيء إصلاح المشكلة؛ -)

ويتم نشر بلدي حل أدناه، من فضلك قل لي كيف لجعله أفضل إذا أمكن ذلك. شكرا!

هل كانت مفيدة؟

المحلول

وأعتقد أنني حظيت بها. هنا هو الحل الذي يبدو للعمل. يمكن تحسينها باستخدام عناصر تحكم المستخدم ولكن هذا هو جوهر ما يلي:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow && 
        (e.Row.RowState & DataControlRowState.Selected) > 0)
    {
        Table tbl = (Table)e.Row.Parent;
        GridViewRow tr = new GridViewRow(e.Row.RowIndex + 1, -1,
            DataControlRowType.EmptyDataRow, DataControlRowState.Normal);
        TableCell tc = new TableCell();
        tc.ColumnSpan = GridView1.Columns.Count;
        tc.Controls.Add(
            makeChildGrid(Convert.ToInt32(
                ((DataRowView)e.Row.DataItem)["ROW_ID_FIELD"])));
        tr.Cells.Add(tc);
        tbl.Rows.Add(tr);
    }
}

protected GridView makeChildGrid(int id)
{
    GridView gv = new GridView();
    SqlDataSource sqlds = new SqlDataSource();
    sqlds.DataSourceMode = SqlDataSourceMode.DataSet;
    sqlds.ConnectionString = SqlDataSource1.ConnectionString;
    sqlds.SelectCommand = "SELECT * from MY_TABLE_NAME " +
        "WHERE KEY_FIELD = " + id.ToString();
    DataView dv = (DataView)sqlds.Select(DataSourceSelectArguments.Empty);
    gv.DataSource = dv;
    gv.DataBind();    //not sure this is necessary...?
    return gv;
}

نصائح أخرى

وشكرا لتقاسم هذه التعليمات البرمجية.

وأنا أحاول أن تفعل الشيء نفسه (خلق gridview متداخلة)، ولكن في الواقع، لم يكن لديك لإنشاء gridview نفسك. بدلا من ذلك، يمكنك فقط لف الرقابة في العلامات. لقد رأيت مثالا هنا HTTP: //www.codeproject. كوم / KB / ASPNET / EditNestedGridView.aspx؟ جي اس = 3089755 # xx3089755xx

وكنت أرى أن المطور قد تتداخل تحكم GV فقط عن طريق wraping وعنصر التحكم GridView الثانية ضمن العلامات.

إذا كنت تستطيع أن تفعل ما يفعله من قبل الرمز، فإنه سيكون أكثر effecient. انك لن تحتاج لعرض كافة الحقول المحددة !! وبالإضافة إلى ذلك، سوف يكون بصريا قادرة على بعض الضوابط تضاف إلى gridview طفلك.

ولقد حولت التعليمات البرمجية لرموز والعمل على أكمل وجه.

والشكر

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top