C Sharp Datagrid Satır Yüksekliği Sorunu

ctnmm22

Centipat
Katılım
4 Şubat 2021
Mesajlar
43
Çözümler
1
Daha fazla  
Cinsiyet
Erkek
Arkadaşlar merhaba. Datagridview'e veri çekiyorum. Öncelikle postgresql kullanıyorum. Gelen verilerden birisi username diğeri content. Fakat contentler bildiğiniz paragraf. İstiyorum satır aşağı doğru otomatik genişlesin. Fakat yapamıyorum.


2. Yöntem olarak veriyi richtextbox'a çekmeyi de denedim. Bu sefer sadece ilk veri geliyor. Diğerleri gelmiyor. Yardımcı olabilecek var mı?

1. Yöntem: Comboboxtan seçilen burcun Özelliğini getiriyor(datada kayıtlı ve değiştirilemez.) ve o burç hakkındaki yorumları getiriyor(kullanıcıların girdikleri).

2. Yöntem: Burada seçilen kategorideki filmleri richtext'e yazdırmayı denedim. Sadece ilk veri geldi.

[CODE lang="csharp" title="1. Yöntem Datagrid"]private void Horoscopes_Load(object sender, EventArgs e)
{
connection.Open();
NpgsqlDataAdapter da = new NpgsqlDataAdapter("select * from horoscopes", connection);
DataTable dt = new DataTable();
da.Fill(dt);

comboBox1.DisplayMember = "horoscopename";
comboBox1.ValueMember = "horoscopeid";

comboBox1.DataSource = dt;
connection.Close();
}

private void search_button_Click(object sender, EventArgs e)
{
panel01.Visible = true;
panel02.Visible = true;
int hid;
string hidd = comboBox1.SelectedValue.ToString();
Int32.TryParse(hidd, out hid);

connection.Open();
NpgsqlCommand getfeature = new NpgsqlCommand("select * from horoscopefeatures where horoscopeid="+hid, connection);

NpgsqlDataReader reader = getfeature.ExecuteReader();

if (reader.Read())
{
richTextBox2.Text = reader["featurecontent"].ToString();
connection.Close();
}
else MessageBox.Show("Error","Error");
connection.Open();
string find = "select hrcontent as Replies,username as Writer from hreplies where horoscopeid=" + hid;

NpgsqlDataAdapter da = new NpgsqlDataAdapter(find, connection);
DataSet ds = new DataSet();
da.Fill(ds);
dataGridView2.DataSource = ds.Tables[0];
connection.Close();
}[/CODE]


[CODE lang="csharp" title="2.Yöntem"]private void Movie_Advices_Load(object sender, EventArgs e)
{
connection.Open();
NpgsqlDataAdapter da = new NpgsqlDataAdapter("select * from filmcategories",connection);
DataTable dt = new DataTable();
da.Fill(dt);

type_combobox.DisplayMember = "catname";
type_combobox.ValueMember = "catid";

type_combobox.DataSource = dt;
connection.Close();
}

private void src_button_Click(object sender, EventArgs e)
{
string catidd = type_combobox.SelectedValue.ToString();
int catid;
Int32.TryParse(catidd,out catid);

connection.Open();
NpgsqlCommand getinfo = new NpgsqlCommand("Select moviename,movietopic,username from moviestable2 where catid=" + catid, connection);
NpgsqlDataReader reader = getinfo.ExecuteReader();
if (reader.Read())
{
richTextBox2.Text = "Movie name : "+reader["moviename"].ToString()+"\n \n"+reader["movietopic"].ToString()+"\n \n"+"Writer : "+reader["username"].ToString()+"\n"+"----------------------------------------"+"\n";
}
connection.Close();
}[/CODE]
 
İlk önce kolay olandan başlayayım, 2. yöntemde verilerin hepsinin gelmemesinin sebebi if kullanmanız. Sadece bir kere koşulu kontrol edip ilk geleni yazdırıyor. orada while kullansaydınız yani while(reader.Read()) deseydiniz okuduğu sürece verileri eklemeye devam edecekti.

Şimdi diğerine gelelim, kodu tamamen incelemedim onu söyleyeyim. Buradaki problem ise satırın büyüklüğü anladığım kadarıyla. Satırın yüksekliğini type_comboboxRowTemplate.Height ile değiştirebilirsiniz. Diğer türlü veriye tıklandığı zaman içeriğini bir TextBox'a yazdıran kod yazabilirsiniz. Böylece okunaklığı da artmış olur.
 
İlk önce kolay olandan başlayayım, 2. yöntemde verilerin hepsinin gelmemesinin sebebi if kullanmanız. Sadece bir kere koşulu kontrol edip ilk geleni yazdırıyor. orada while kullansaydınız yani while(reader.Read()) deseydiniz okuduğu sürece verileri eklemeye devam edecekti.

Şimdi diğerine gelelim, kodu tamamen incelemedim onu söyleyeyim. Buradaki problem ise satırın büyüklüğü anladığım kadarıyla. Satırın yüksekliğini type_comboboxRowTemplate.Height ile değiştirebilirsiniz. Diğer türlü veriye tıklandığı zaman içeriğini bir TextBox'a yazdıran kod yazabilirsiniz. Böylece okunaklığı da artmış olur.
Peki burada
C#:
type_comboboxRowTemplate.Height
bunu yazdıktan sonra otomatik olmasını sağlayabilir miyim? Yani metine göre aşağı doğru uzasın.
 
Peki burada
C#:
type_comboboxRowTemplate.Height
bunu yazdıktan sonra otomatik olmasını sağlayabilir miyim? Yani metine göre aşağı doğru uzasın.
Burada matematik kullanabileceğinizi düşünüyorum, oran orantı yapabilirsiniz satır sayısına göre.

Bunun dışında bu makaleye de göz atabilirsiniz.
 
Burada matematik kullanabileceğinizi düşünüyorum, oran orantı yapabilirsiniz satır sayısına göre.

Bunun dışında bu makaleye de göz atabilirsiniz.
Öncelikle cevabın için çok teşekkür ederim. Bu arada "while" konusunu denetim. Fakat olmadı. Bende bir "for" döngüsü yazdım. En büyük id'yi bulup 1'er 1'er küçülterek tüm verileri en son eklenenden itibaren eklemeye başlıyor.

C#:
connection.Open();
            NpgsqlCommand getid = new NpgsqlCommand("select hreplieid from  hreplies where horoscopeid=" + hid + " order by hreplieid DESC limit 1", connection);
            NpgsqlDataReader reader3 = getid.ExecuteReader();
            if(reader3.Read())
            {
                string tutucu = reader3["hreplieid"].ToString();
                Int32.TryParse(tutucu, out a);
                
            }

            connection.Close();
            string tutt="";

            for (int i=a;i>=0;i--)
            {
                
                connection.Open();
                
                NpgsqlCommand getinfo = new NpgsqlCommand("select hrcontent,username from hreplies where horoscopeid=" + hid+" and hreplieid="+i, connection);
                NpgsqlDataReader reader2 = getinfo.ExecuteReader();
                if (reader2.Read())
                {
                    string tut = "Reply : " + reader2["hrcontent"].ToString() + "\n \nWriter : " + reader2["username"].ToString() + "\n \n"+"----------------------------------------" + "\n";

                    richTextBox3.Text = tutt + tut;
                    tutt = richTextBox3.Text;
                }
                connection.Close();
            }

Böyle ekliyim belki ileride arayan olur. Farklı bir yöntem oldu.
 
[CODE lang="csharp" title="C#"]private void src_button_Click(object sender, EventArgs e)
{
string catidd = type_combobox.SelectedValue.ToString();
int catid;
Int32.TryParse(catidd,out catid);

connection.Open();
NpgsqlCommand getinfo = new NpgsqlCommand("Select moviename,movietopic,username from moviestable2 where catid=" + catid, connection);
NpgsqlDataReader reader = getinfo.ExecuteReader();
while (reader.Read())
{
richTextBox2.Text += "Movie name : "+reader["moviename"].ToString()+"\n \n"+reader["movietopic"].ToString()+"\n \n"+"Writer : "+reader["username"].ToString()+"\n"+"----------------------------------------"+"\n";
}
connection.Close();
}[/CODE]

Aslında dediğim şey buydu, belki richTextBox2.Text += değil de = koymuşsunuzdur.
 

Technopat Haberler

Yeni konular

Geri
Yukarı