Forum
iyi gunler....problemim i datagridtextbox hucresinin text alaninin sag kismina gelecek sekilde yerlestirdigim buttonun dinamik olarak
,alt satirlara otomatikmen yerlesme sorunu….alt satirlardada o butonun ayni
sekilde yerlesmesini nasil saglarim?simdiden ilginize
tskler..
Tablo yapını bilmiyorum ama bunu 2 yolla yaparsın.
1- datagrid'in autogenerateclomuns değerini false yaparsın ve colonları tek tek <columns> etiketi altına yazarsın. buton için aşağıdaki kodları yazarsın.
<asp:ButtonField HeaderText="Kolon adı" DataTextField="sdsd" CommandName="olaylar" />
bu buton için eventini kullanmak içinse datagrid'in rowcommand eventini kullanabilirsin.
2- dinamik oluşturmak için datagridin rowdatabound eventi kullanarak aşağıdaki gibi örnek gibi yapabilirsin.
protected void kayitlar_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) // hücrenin tipini sorgulamak için headere buton koymamak için { Button butoncuk = new Button(); //dinamik olarak yarattık butoncuk.Text = "Buton yazısı"; //buton üstündeki yazı butoncuk.CommandName = "sil"; //datagrid rowcommandda kullanacağın commandname butoncuk.CommandArgument = "deneme"; //commandname değeri e.Row.Cells[1].Controls.Add(butoncuk); // burada ise o hücreye bu kontrolü ekliyorsun } }
sorunu su sekilde cozdum arkadaslar,eminimki cogunuzun bu koda ihtiyaci olacak gunun birinde ...cunku bu kodlari nedense hic kimse paylasmiyor......hepinize kolay gelsin....
private void cellButton_Click(object sender, EventArgs e)
{
frmselectitems frmselect1 = new frmselectitems(this, "select [MALZEMEID],[MALZEMEKOD]", " [ITEMSCARD]", "[MALZEMEKOD]");
frmselect1.ShowDialog();
int satirsayisi = dgvsatisfatura.Rows.Count;
//
//{
// dgvsatisfatura.Rows.Add();
for (int i = 0; i < satirsayisi-1; i++)
{
dgvsatisfatura.Rows[i].Cells[0].Tag = Selectitemsid;
if (dgvsatisfatura.CurrentCell.Tag == dgvsatisfatura.Rows[i].Cells[0].Tag)
{
dgvsatisfatura.Rows[i].Cells[0].Value = Selectitemvalue;
dgvsatisfatura.Rows[i].Cells[1].Value = Selectitemvalue1;
dgvsatisfatura.Rows[i].Cells[3].Value = Convert.ToString(Selectitemvalue2);
dgvsatisfatura.Rows[i].Cells[4].Value = Convert.ToInt32(dgvsatisfatura.Rows[i].Cells[3].Value) * Convert.ToInt32(dgvsatisfatura.Rows[i].Cells[2].Value);
}
}
}
private void dgvsatisfatura_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (e.ColumnIndex == 0)
{
System.Windows.Forms.Button cellButton = new System.Windows.Forms.Button();
cellButton.Tag = e.RowIndex;
cellButton.Text = "...";
cellButton.Width = 22;
cellButton.Click += new EventHandler(cellButton_Click);
dgvsatisfatura.Controls.Add(cellButton);
Rectangle cell = this.dgvsatisfatura.GetCellDisplayRectangle(0, e.RowIndex, true);
cellButton.Location = new Point(cell.Right - cellButton.Width, cell.Top);
}
}
not:datagridview hucresine manuel button yerlestirmenize gerek yok...bu kod zaten o buttonu olusturuyor...sadece hangi kolonun satirlarinda olmasi lazim,onu belirtmeniz lazim ben ilk kolona yerlestirdim.....