boundfield add使用自己选择的表加倍自己 [英] boundfield add make double it self by the table selected

查看:85
本文介绍了boundfield add使用自己选择的表加倍自己的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,我有一个gridview,使用来自asp.net的boundfield注入,也来自C#IDE的硬编码,第一个问题是每次我在页面加载事件中将数据加载到gridview中,字段列总是从它的原始内容中添加两次,例如我选择字段a,b,c,d但是由于回发,gridview中显示的字段变为a,b,c,b,c,d并且当我将eventhandler名称放入if(!ispostback)时此问题已修复{},但是当我从表中执行搜索数据时,这个问题再次出现。我试图找到解决方案,但仍然没有运气,请大家帮帮我..



这是我的一些代码:

 SqlConnection tarikdatakondisi1 =  new  SqlConnection(StartKoneksiDatatable()); 

// buka koneksi kedalam datatable
tarikdatakondisi1.Open( );

SqlDataAdapter sda1 = new SqlDataAdapter( 选择BillingNo,deskripsi,customername,来自mastertablebilling的备注,其中tablestatusId = 1,billingstatusId = 1,tarikdatakondisi1);
DataTable dt1 = new DataTable();
sda1.Fill(dt1);

// masuk ke kondisi dimana datatable adakah atau tidak
if (dt1!= null
{
if (dt1.Rows.Count > 0
{
// melakukan perhitungan jumlah row kolom untuk dijadikan materi dan diinsert berapa banyak row kolom yang dibutuhkan dengan looping tiap field yang di select
for int i = 0 ; i < dt1.Columns.Count; i ++)
{
// 指定boundfield sebagai数组变量kolom space(ruang)
BoundField boundField = new BoundField();

// kondisi sebaliknya jika ternyata ada field tersebut,maka tetapkan langsung headertextnya
boundField.DataField = dt1.Columns [i] .ColumnName.ToString();

// buat kondisi jika ternyata ada field yang bernama tersebut,maka prosedural penetapan secara otomatis dilewatkan ,karena sudah ada dari hardcode
if (dt1.Columns [i] .ColumnName.ToString()!= BillingNo
{
if (dt1.Columns [i] .ColumnName.ToString()== deskripsi
{
boundField.HeaderText = Deskripsi;
}
if (dt1.Columns [i] .ColumnName.ToString()== customername
{
boundField.HeaderText = < span class =code-string> Customer;
}
if (dt1.Columns [i] .ColumnName.ToString()== 备注
{
boundField.HeaderText = < span class =code-string>备注;
}
// asignment field yang sudah didapat hasil tangkapan ke boundfield untuk dijadikan row kolom sesuai dengan headertext yang sudah dibuat
gridviewformindexteknis.Columns.Add(boundField);
}
}
}
}
// lempar data tarikan ke row grid
gridviewformindexteknis.DataSource = dt1;
gridviewformindexteknis.DataBind();
tarikdatakondisi1.Close();
}



来自我的gridview ASP.Net代码:

< td>< asp:Panel ID = < span class =code-string>  panelgdformindeteknis runat =   server style =   overflow:auto宽度=   100% >  
< asp:GridView ID = gridviewformindexteknis runat = server
AutoGenerateColumns = false BackColor = 白色
BorderColor = < span class =code-string> #E7E7FF BorderStyle = BorderWidth = 1px CellPadding = 3
AllowPaging = false OnPageIndexChanging = PageIndexChanging
style = 溢出:自动宽度= 100% >
< footerstyle backcolor = #B5C7DE forecolor = #4A3C8C />
< rowstyle backcolor = #E7E7FF forecolor = #4A3C8C />
< pagerstyle backcolor = #E7E7FF forecolor = #4A3C8C horizo​​ntalalign = 正确 />
< SelectedRowStyle BackColor = #738A9C Font-Bold = True ForeColor = #F7F7F7 />
< HeaderStyle BackColor = #4A3C8C Font-Bold = True ForeColor = #F7F7F7 />
< alternatingrowstyle backcolor = #F7F7F7 />
< columns>
< asp:HyperLinkField HeaderText = Nomer Billing目标= _ blank DataNavigateUrlFields = BillingNo DataTextField = BillingNo DataNavigateUrlFormatString = 〜/ detailBillingTek.aspx?BillingNo = {0} />
< / >



请有人可以帮助我吗?

解决方案

因为你的绑定代码只从数据库中检索数据并将其绑定到网格视图,我建议按如下所述绑定它:



设计页面:

 <   asp:GridView     ID   =  gridviewformindexteknis    runat   =   server  

< span class =code-attribute> AutoGenerateColumns = false BackColor = 白色 < span class =code-attribute>

< span class =code-attribute> BorderColor = #E7E7FF BorderStyle = BorderWidth = 1px CellPadding = 3

AllowPaging = fa lse OnPageIndexChanging = PageIndexChanging

样式 = 溢出:自动 宽度 = 100% >
< FooterStyle BackColor = #B5C7DE ForeColor = #4A3C8C / >
< RowStyle BackColor = #E7E7FF ForeColor = #4A3C8C / >
< PagerStyle BackColor = #E7E7FF ForeColor = #4A3C8C Horizo​​ntalAlign = 正确 / >
< SelectedRowStyle BackColor = #738A9C Font-Bold =
True ForeColor = #F7F7F7 / >
< HeaderStyle BackColor = #4A3C8C < span class =code-attribute> Font-Bold = True ForeColor = #F7F7F7 / >
< AlternatingRowStyle < span class =code-attribute> BackColor = #F7F7F7 / >
< >
< asp:BoundField DataField = deskripsi HeaderText = Deskripsi / >
< asp:BoundField DataField = deskripsi HeaderText = Deskripsi < span class =code-attribute> / >
< asp:BoundField DataField = customername HeaderText = 客户 / >
< asp:BoundField DataField = 备注 HeaderText = 备注 < span class =code-keyword> / >
< asp:HyperLinkField HeaderText = Nomer Billin g 目标 = _ blank DataNavigateUrlFields = BillingNo DataTextField = BillingNo DataNavigateUrlFormatString = 〜/ detailBillingTek.aspx? BillingNo = {0} / > ;
< /列 >
&l t; / asp:GridView >







代码背后:

 SqlConnection tarikdatakondisi1 =  new  SqlConnection(StartKoneksiDatatable()); 

// buka koneksi kedalam datatable
tarikdatakondisi1.Open( );

SqlDataAdapter sda1 = new SqlDataAdapter( 选择BillingNo,deskripsi,customername,来自mastertablebilling的备注,其中tablestatusId = 1,billingstatusId = 1,tarikdatakondisi1);
DataTable dt1 = new DataTable();
sda1.Fill(dt1);

// lempar data tarikan ke row grid
gridviewformindexteknis。 DataSource = dt1;
gridviewformindexteknis.DataBind();
tarikdatakondisi1.Close();


我已经解决了我自己的问题,看起来就像故障一样因为我分配了



引用:

gridviewformindexteknis.Columns.Add(boundField);

gridviewformindexteknis.DataSource = null;



在循环条件内,所以也许系统计算为字段是double值,因为对于i ++





i已经更新了asp.net背后的代码:



这是我的asp.net gridview :



Quote:





< asp:Panel ID =panelgdformindeteknisrunat =serverstyle =overflow:auto宽度=100%>

< asp:GridView ID =gridviewformindexteknisrunat =serverBackColor =White

BorderColor =#E7E7FFBorderStyle =NoneBorderWidth =1pxCellPadding =3

AllowPaging =falseOnPageIndexChanging =PageIndexChangingstyle =overflow:autoWidth =100%AutoGenerateColumns =False>

< footerstyle backcolor =#B5C7DEforecolor =#4A3C8C>

< rowstyle backcolor = #E7E7FFforecolor =#4A3C8C>

< pagerstyle backcolor =#E7E7FFforecolor =#4A3C8Chorizo​​ntalalign =Right>

< SelectedRowStyle BackColor =#738A9CFont-Bold =TrueForeColor =#F7F7F7/>

< HeaderStyle BackColor =#4A3C8CFont-Bold =TrueForeColor =#F7F7F7/>

< alternatingrowstyle backcolor =#F7F7F7>

< columns> < asp:HyperLinkField HeaderText =Nomer BillingTarget =_ blankDataNavigateUrlFields =BillingNoDataTextField =BillingNoDataNavigateUrlFormatString =〜/ detailBillingTek.aspx?BillingNo = {0}/>

< asp:BoundField DataField =deskripsiHeaderText =Deskripsi/>

< asp:BoundField DataField =customernameHeaderText =Customer/>









这是后面的代码:



Quote:

// kondisi单选按钮yang dipilih == dimana文件结算状态adalah new atau新更新(ini adalah status new yang pernah direject dan telah diupdated)

if(rboacceptedbilling.Checked == true)

{

if((drpdpilihfungsi.SelectedValue ==Pilih)||(drpdpil) ihfungsi.SelectedValue ==)& (txtdeskripsi.Text ==))

{

//分配boundfield sebagai数组变量kolom空间(ruang)

BoundField boundField5 = new BoundField();



SqlConnection koneksitarikdatadualaccepnofilt = new SqlConnection(StartKoneksiDatatable());



// buka koneksi kedalam datatable

koneksitarikdatadualaccepnofilt.Open();



SqlDataAdapter sda5 = new SqlDataAdapter(select BillingNo,deskripsi,customername,customerjabatan,来自mastertablebilling的备注,其中tablestatusId = 1,billingstatusId = 1或billingstatusId = 3或billingstatusId = 4,koneksitarikdatadualaccepnofilt);

DataTable dt5 = new DataTable();

sda5。填写(dt5);



// masuk ke kondisi dimana datatable adakah atau tidak

if(dt5!= null)

{

if( dt5.Rows.Count> 0)

{

// melakukan perhitungan jumlah row kolom untuk dijadikan materi dan diinsert berapa banyak row kolom yang dibutuhkan dengan looping tiap field yang di select

for(int i = 0; i< dt5.Columns.Count; i ++)

{

// buat kondisi jika ternyata ada field yang bernama tersebut,maka prosedural penetapan secara otomatis dilewatkan,karena sudah ada dari hardcode

if(dt5.Columns [i] .ColumnName.ToString()!=BillingNo)

{

// kondisi sebaliknya jika ternyata ada field tersebut,maka tetapkan langsung headertextnya

boundField5.DataField = dt5.Columns [i] .ColumnName.ToString();



if(dt5.Columns [i] .ColumnName.ToString()==deskripsi)

{

boundField5.HeaderText =Deskripsi ;

}

if(dt5.Columns [i] .ColumnName.ToString()==customername)

{

boundField5.HeaderText =Customer;

}

if(dt5.Columns [i] .ColumnName.ToString()==customerjabatan)

{

boundField5.HeaderText =Posisi;

}

if(dt5.Columns [i] 。柱Name.ToString()==备注)

{

boundField5.HeaderText =备注;

}

// asignment field yang sudah didapat hasil tangkapan ke boundfield untuk dijadikan row kolom sesuai dengan headertext yang sudah dibuat

//gridviewformindexteknis.Columns.Add(boundField5);

}

}

}

}

// asignment field yang sudah didapat hasil tangkapan ke boundfield untuk dijadikan row kolom sesuai dengan headertext yang sudah dibuat

gridviewformindexteknis.Columns.Add(boundField5);

gridviewformindext eknis.DataSource = null; //清除网格



// lempar数据阵列kedalam row gridview

gridviewformindexteknis.DataSource = dt5;

gridviewformindexteknis.DataBind();

koneksitarikdatadualaccepnofilt.Close();

}





显示堆栈,当我想添加更多列作为过滤器nomer 2搜索(获取数据方法)时,如果有任何错误,我可以给任何人动态更多的代码和脚本


hi guys, i have a gridview, that using boundfield inject from asp.net, also hardcode from C# IDE, first problem is everytime i load data into gridview in page load event, the field column always adding twice from it's original, example i select field a,b,c,d but bwcause of the postback the field shown in gridview is become a,b,c,b,c,d and this problem fixed when i put the eventhandler name into if(!ispostback){}, but this problem come again when i execute searching data from table. i has try to find the solution but still no luck, please everybody helm me..

this is some code from me :

SqlConnection tarikdatakondisi1 = new SqlConnection(StartKoneksiDatatable());

                    // buka koneksi kedalam datatable
                    tarikdatakondisi1.Open();

                    SqlDataAdapter sda1 = new SqlDataAdapter("select BillingNo, deskripsi, customername, remarks from mastertablebilling where tablestatusId = 1 and billingstatusId = 1", tarikdatakondisi1);
                    DataTable dt1 = new DataTable();
                    sda1.Fill(dt1);

                    // masuk ke kondisi dimana datatable adakah atau tidak
                    if (dt1 != null)
                    {
                        if (dt1.Rows.Count > 0)
                        {
                            // melakukan perhitungan jumlah row kolom untuk dijadikan materi dan diinsert berapa banyak row kolom yang dibutuhkan dengan looping tiap field yang di select
                            for (int i = 0; i < dt1.Columns.Count; i++)
                            {
                                // assign boundfield sebagai array variable kolom space(ruang)
                                BoundField boundField = new BoundField();

                                // kondisi sebaliknya jika ternyata ada field tersebut, maka tetapkan langsung headertextnya
                                boundField.DataField = dt1.Columns[i].ColumnName.ToString();

                                // buat kondisi jika ternyata ada field yang bernama tersebut, maka prosedural penetapan secara otomatis dilewatkan, karena sudah ada dari hardcode
                                if (dt1.Columns[i].ColumnName.ToString() != "BillingNo")
                                {
                                    if (dt1.Columns[i].ColumnName.ToString() == "deskripsi")
                                    {
                                        boundField.HeaderText = "Deskripsi";
                                    }
                                    if (dt1.Columns[i].ColumnName.ToString() == "customername")
                                    {
                                        boundField.HeaderText = "Customer";
                                    }
                                    if (dt1.Columns[i].ColumnName.ToString() == "remarks")
                                    {
                                        boundField.HeaderText = "Remarks";
                                    }
                                    // asignment field yang sudah didapat hasil tangkapan ke boundfield untuk dijadikan row kolom sesuai dengan headertext yang sudah dibuat
                                    gridviewformindexteknis.Columns.Add(boundField);
                                }
                            }
                        }
                    }
                    // lempar data tarikan ke row grid
                    gridviewformindexteknis.DataSource = dt1;
                    gridviewformindexteknis.DataBind();
                    tarikdatakondisi1.Close();
}


this is from my gridview ASP.Net code :

<td><asp:Panel ID="panelgdformindeteknis" runat="server" style="overflow:auto" Width="100%">
                <asp:GridView ID="gridviewformindexteknis" runat="server" 
                    AutoGenerateColumns="false" BackColor="White"
                BorderColor="#E7E7FF" BorderStyle="None" BorderWidth="1px" CellPadding="3" 
                    AllowPaging="false" OnPageIndexChanging="PageIndexChanging" 
                    style="overflow:auto" Width="100%">
                <footerstyle backcolor="#B5C7DE" forecolor="#4A3C8C" />
                <rowstyle backcolor="#E7E7FF" forecolor="#4A3C8C" />
                <pagerstyle backcolor="#E7E7FF" forecolor="#4A3C8C" horizontalalign="Right" />
                <SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="#F7F7F7" />
                <HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#F7F7F7" />
                <alternatingrowstyle backcolor="#F7F7F7" />
                <columns>
                <asp:HyperLinkField HeaderText="Nomer Billing" Target="_blank" DataNavigateUrlFields="BillingNo" DataTextField="BillingNo" DataNavigateUrlFormatString="~/detailBillingTek.aspx?BillingNo={0}" />
                </columns>


please anyone any can help me?

解决方案

As your binding code only retrieves data from database and bind it to grid view, I suggest to bind it as mentioned below :

Design Page:

<asp:GridView ID="gridviewformindexteknis" runat="server"

        AutoGenerateColumns="false" BackColor="White"

        BorderColor="#E7E7FF" BorderStyle="None" BorderWidth="1px" CellPadding="3"

        AllowPaging="false" OnPageIndexChanging="PageIndexChanging"

        Style="overflow: auto" Width="100%">
        <FooterStyle BackColor="#B5C7DE" ForeColor="#4A3C8C" />
        <RowStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" />
        <PagerStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" HorizontalAlign="Right" />
        <SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="#F7F7F7" />
        <HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#F7F7F7" />
        <AlternatingRowStyle BackColor="#F7F7F7" />
        <Columns>
            <asp:BoundField DataField="deskripsi" HeaderText="Deskripsi" />
            <asp:BoundField DataField="deskripsi" HeaderText="Deskripsi" />
            <asp:BoundField DataField="customername" HeaderText="Customer" />
            <asp:BoundField DataField="remarks" HeaderText="Remarks" />
            <asp:HyperLinkField HeaderText="Nomer Billing" Target="_blank" DataNavigateUrlFields="BillingNo" DataTextField="BillingNo" DataNavigateUrlFormatString="~/detailBillingTek.aspx?BillingNo={0}" />
        </Columns>
    </asp:GridView>




Code Behind :

SqlConnection tarikdatakondisi1 = new SqlConnection(StartKoneksiDatatable());

            // buka koneksi kedalam datatable
            tarikdatakondisi1.Open();

            SqlDataAdapter sda1 = new SqlDataAdapter("select BillingNo, deskripsi, customername, remarks from mastertablebilling where tablestatusId = 1 and billingstatusId = 1", tarikdatakondisi1);
            DataTable dt1 = new DataTable();
            sda1.Fill(dt1);
            
            // lempar data tarikan ke row grid
            gridviewformindexteknis.DataSource = dt1;
            gridviewformindexteknis.DataBind();
            tarikdatakondisi1.Close();


i has solved the problem by my self, look's like the fault is because i assign the

Quote:

gridviewformindexteknis.Columns.Add(boundField);
gridviewformindexteknis.DataSource = null;

inside the looping condition, so maybe the system counting as the field is double value, because for the i++



i has updated the code behind also the asp.net :

this is the asp.net gridview of mine :

Quote:



<asp:Panel ID="panelgdformindeteknis" runat="server" style="overflow:auto" Width="100%">
<asp:GridView ID="gridviewformindexteknis" runat="server" BackColor="White"
BorderColor="#E7E7FF" BorderStyle="None" BorderWidth="1px" CellPadding="3"
AllowPaging="false" OnPageIndexChanging="PageIndexChanging" style="overflow:auto" Width="100%" AutoGenerateColumns="False">
<footerstyle backcolor="#B5C7DE" forecolor="#4A3C8C">
<rowstyle backcolor="#E7E7FF" forecolor="#4A3C8C">
<pagerstyle backcolor="#E7E7FF" forecolor="#4A3C8C" horizontalalign="Right">
<SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="#F7F7F7" />
<HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#F7F7F7" />
<alternatingrowstyle backcolor="#F7F7F7">
<columns> <asp:HyperLinkField HeaderText="Nomer Billing" Target="_blank" DataNavigateUrlFields="BillingNo" DataTextField="BillingNo" DataNavigateUrlFormatString="~/detailBillingTek.aspx?BillingNo={0}" />
<asp:BoundField DataField="deskripsi" HeaderText="Deskripsi" />
<asp:BoundField DataField="customername" HeaderText="Customer" />




and this is the code behind :

Quote:

// kondisi radio button yang dipilih == dimana file billing status adalah new atau new updated(ini adalah status new yang pernah direject dan telah diupdated)
if (rboacceptedbilling.Checked == true)
{
if ((drpdpilihfungsi.SelectedValue == "Pilih") || (drpdpilihfungsi.SelectedValue == "") & (txtdeskripsi.Text == ""))
{
// assign boundfield sebagai array variable kolom space(ruang)
BoundField boundField5 = new BoundField();

SqlConnection koneksitarikdatadualaccepnofilt = new SqlConnection(StartKoneksiDatatable());

// buka koneksi kedalam datatable
koneksitarikdatadualaccepnofilt.Open();

SqlDataAdapter sda5 = new SqlDataAdapter("select BillingNo, deskripsi, customername, customerjabatan, remarks from mastertablebilling where tablestatusId = 1 and billingstatusId = 1 or billingstatusId = 3 or billingstatusId = 4", koneksitarikdatadualaccepnofilt);
DataTable dt5 = new DataTable();
sda5.Fill(dt5);

// masuk ke kondisi dimana datatable adakah atau tidak
if (dt5 != null)
{
if (dt5.Rows.Count > 0)
{
// melakukan perhitungan jumlah row kolom untuk dijadikan materi dan diinsert berapa banyak row kolom yang dibutuhkan dengan looping tiap field yang di select
for (int i = 0; i < dt5.Columns.Count; i++)
{
// buat kondisi jika ternyata ada field yang bernama tersebut, maka prosedural penetapan secara otomatis dilewatkan, karena sudah ada dari hardcode
if (dt5.Columns[i].ColumnName.ToString() != "BillingNo")
{
// kondisi sebaliknya jika ternyata ada field tersebut, maka tetapkan langsung headertextnya
boundField5.DataField = dt5.Columns[i].ColumnName.ToString();

if (dt5.Columns[i].ColumnName.ToString() == "deskripsi")
{
boundField5.HeaderText = "Deskripsi";
}
if (dt5.Columns[i].ColumnName.ToString() == "customername")
{
boundField5.HeaderText = "Customer";
}
if (dt5.Columns[i].ColumnName.ToString() == "customerjabatan")
{
boundField5.HeaderText = "Posisi";
}
if (dt5.Columns[i].ColumnName.ToString() == "remarks")
{
boundField5.HeaderText = "Remarks";
}
// asignment field yang sudah didapat hasil tangkapan ke boundfield untuk dijadikan row kolom sesuai dengan headertext yang sudah dibuat
//gridviewformindexteknis.Columns.Add(boundField5);
}
}
}
}
// asignment field yang sudah didapat hasil tangkapan ke boundfield untuk dijadikan row kolom sesuai dengan headertext yang sudah dibuat
gridviewformindexteknis.Columns.Add(boundField5);
gridviewformindexteknis.DataSource = null;// clear the grid

// lempar data array kedalam row gridview
gridviewformindexteknis.DataSource = dt5;
gridviewformindexteknis.DataBind();
koneksitarikdatadualaccepnofilt.Close();
}



the stack is shown, when i want to add more column as the filter nomer 2 searching(get data method), please anybody can give me the dynamic more code and script if there any of mistaken maybe by me


这篇关于boundfield add使用自己选择的表加倍自己的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆