আমি ট্যাগগুলি কীভাবে GridView
রেন্ডার করতে <thead>
<tbody>
পারি? আমি জানি .UseAccessibleHeaders
এটির <th>
পরিবর্তে এটি তৈরি করে <td>
, তবে আমি <thead>
উপস্থিত হতে পারি না ।
আমি ট্যাগগুলি কীভাবে GridView
রেন্ডার করতে <thead>
<tbody>
পারি? আমি জানি .UseAccessibleHeaders
এটির <th>
পরিবর্তে এটি তৈরি করে <td>
, তবে আমি <thead>
উপস্থিত হতে পারি না ।
উত্তর:
এটি করা উচিত:
gv.HeaderRow.TableSection = TableRowSection.TableHeader;
HeaderRow
সম্পত্তি হতে হবে null
যতক্ষণ না GridView
ডেটা আবদ্ধ হয়েছে, তাই যতক্ষণ না databinding কোডের উপরের লাইনটি চালানোর আগে ঘটেছে অপেক্ষা করতে ভুলবেন না।
thead
হ'ল এটি jQuery এ ব্যবহার করা। তবে শিরোনাম উপস্থাপনের পরে, tbody
মনে হয় এটি উপলব্ধ হবে না। আমার ক্ষেত্রে কি অনুপস্থিত হতে পারে?
আমি OnRowDataBound
ইভেন্টে এটি ব্যবহার :
protected void GridViewResults_OnRowDataBound(object sender, GridViewRowEventArgs e) {
if (e.Row.RowType == DataControlRowType.Header) {
e.Row.TableSection = TableRowSection.TableHeader;
}
}
GridView
একটি এর মধ্যে থাকে UpdatePanel
এবং কোনও অন্য নিয়ন্ত্রণের ফলে একটি অ্যাসিঙ্ক-পোস্টব্যাক হয় তবে OnRowDataBound
ইভেন্টটি উত্থাপিত হবে না এই উত্তরটির কোডটি কার্যকর করা হবে না, ফলস্বরূপ ট্যাগ GridView
ছাড়াই রেন্ডারিংয়ে ফিরে আসবে <thead>
... দীর্ঘশ্বাস । এই কেসটিকে লক্ষ্য করতে, গৃহীত উত্তর থেকে কোডটি গ্রিডভিউয়ের PreRender
ইভেন্ট হ্যান্ডলারের দিকে সরিয়ে দিন (অনেকটা আসালভোর উত্তর অনুসারে)।
উত্তরে কোডের উপর যেতে প্রয়োজন Page_Load
বা GridView_PreRender
। আমি এটি এমন একটি পদ্ধতিতে রেখেছিলাম যা পরে ডাকা হয়েছিল Page_Load
এবং একটি পেয়েছি NullReferenceException
।
DataBound
ইভেন্টে রাখতে পারেন। grid.DataBound += (s, e) => { grid.HeaderRow.TableSection = TableRowSection.TableHeader; };
আমি এটি করতে নিম্নলিখিত কোড ব্যবহার করি:
if
বিবৃতি আমি যোগ গুরুত্বপূর্ণ।
অন্যথায় (আপনি কীভাবে আপনার গ্রিডটি রেন্ডার করেন তার উপর নির্ভর করে) আপনি ব্যতিক্রমগুলি এড়িয়ে যাবেন:
টেবিলটিতে শিরোনাম, শরীরে এবং তারপরে পাদচরণগুলি সারি বিভাগ থাকা আবশ্যক।
protected override void OnPreRender(EventArgs e)
{
if ( (this.ShowHeader == true && this.Rows.Count > 0)
|| (this.ShowHeaderWhenEmpty == true))
{
//Force GridView to use <thead> instead of <tbody> - 11/03/2013 - MCR.
this.HeaderRow.TableSection = TableRowSection.TableHeader;
}
if (this.ShowFooter == true && this.Rows.Count > 0)
{
//Force GridView to use <tfoot> instead of <tbody> - 11/03/2013 - MCR.
this.FooterRow.TableSection = TableRowSection.TableFooter;
}
base.OnPreRender(e);
}
this
বস্তু আমার GridView হয়।
আমি আমার নিজস্ব কাস্টম নিয়ন্ত্রণ তৈরি করতে আসলে Asp.net গ্রিডভিউকে ওভাররড করেছি, তবে আপনি এটিকে আপনার এসপ্যাক্স.সি.এস. পৃষ্ঠায় পেস্ট করতে পারেন এবং কাস্টম-গ্রিডভিউ পদ্ধতির পরিবর্তে নাম দিয়ে গ্রিডভিউ উল্লেখ করতে পারেন।
এফওয়াইআই: আমি পাদলেখ যুক্তি পরীক্ষা করিনি, তবে আমি জানি এটি শিরোনামগুলির জন্য কাজ করে।
এটি আমার পক্ষে কাজ করে:
protected void GrdPagosRowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.TableSection = TableRowSection.TableBody;
}
else if (e.Row.RowType == DataControlRowType.Header)
{
e.Row.TableSection = TableRowSection.TableHeader;
}
else if (e.Row.RowType == DataControlRowType.Footer)
{
e.Row.TableSection = TableRowSection.TableFooter;
}
}
এটি VS2010 এ চেষ্টা করা হয়েছিল।
একটি ফাংশন তৈরি করুন এবং আপনার PageLoad
ইভেন্টে এই ফাংশনটি ব্যবহার করুন :
ফাংশনটি হ'ল:
private void MakeGridViewPrinterFriendly(GridView gridView) {
if (gridView.Rows.Count > 0) {
gridView.UseAccessibleHeader = true;
gridView.HeaderRow.TableSection = TableRowSection.TableHeader;
}
}
PageLoad
ঘটনা হল:
protected void Page_Load(object sender, EventArgs e) {
if (!IsPostBack)
{
MakeGridViewPrinterFriendly(grddata);
}
}
আমি জানি এটি পুরানো, তবে এখানে একটি স্ট্যান্ডার্ড গ্রিডভিউর জন্য মাইকটাইভির উত্তরটির ব্যাখ্যা দেওয়া হল:
এসপেক্স পৃষ্ঠা:
<asp:GridView ID="GridView1" runat="server"
OnPreRender="GridView_PreRender">
aspx.cs:
protected void GridView_PreRender(object sender, EventArgs e)
{
GridView gv = (GridView)sender;
if ((gv.ShowHeader == true && gv.Rows.Count > 0)
|| (gv.ShowHeaderWhenEmpty == true))
{
//Force GridView to use <thead> instead of <tbody> - 11/03/2013 - MCR.
gv.HeaderRow.TableSection = TableRowSection.TableHeader;
}
if (gv.ShowFooter == true && gv.Rows.Count > 0)
{
//Force GridView to use <tfoot> instead of <tbody> - 11/03/2013 - MCR.
gv.FooterRow.TableSection = TableRowSection.TableFooter;
}
}