/ / गतिशील रूप से ग्रिडव्यू में नियंत्रण डालना - सी #, एएसपीनेट, नियंत्रण

गतिशील रूप से ग्रिडव्यू में नियंत्रण डालना - सी #, एएसपीनेट, नियंत्रण

मेरे पास ऑब्जेक्ट्स की एक सूची है, प्रत्येक ऑब्जेक्ट में 3 गुण हैं..मैं सूची के माध्यम से पुन: प्रयास करना चाहता हूं और उन्हें ग्रिडव्यू के अंदर रखना चाहता हूं।

public void PutAllObjects in a GridView(List<CommentsObject>commentsData)
{
int num=0;
foreach(var item in commentsData)
{
Image img=new Image();
img.imageUrl=item.ImageOfUser;
Hyperlink hl=new Hyperlink();
hl.Text="<br/>"+item.UsersName;
GridView1.Rows[num++].Cells[0].Controls.Add(img);
GridView1.Rows[num].Cells[0].Controls.Add(hl);
lbl=new Label();
lbl.Text=item.UsersComment
GridView1.Rows[num].Cells[1].Controls.Add(lbl);

}

}

मुझे क्या मिलना चाहिए मेरी ग्रिड व्यू 1 में 40 पंक्तियां हैं। प्रत्येक पंक्ति में 2 कॉलम हैं .. पहले कॉलम में एक हाइपरलिंक वाला एक चित्र है, और दूसरे कॉलम में उपयोगकर्ताओं की टिप्पणियां (लेबल) मिल गई हैं ..

क्या मैं सही तरीके से कोड लिखता हूं? या क्या मैं चाहता हूं कि हासिल करने के लिए एक बेहतर तरीका है

उत्तर:

जवाब के लिए 2 № 1

आपको ऐसा कुछ करना चाहिए।

GridView1.DataSource = commentsData;
GridView1.DataBind();

यदि आप केवल दो कॉलम बांधना चाहते हैं तो आप निम्न कार्य कर सकते हैं।

var source = from p in commentsData
select new {p.ImageOfUser, "<br/>" + p.UsersName, p.UsersComment };
GridView1.DataSource = source;
GridView1.DataBind();

<asp:GridView ID="gvView" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:TemplateField HeaderText="#">
<ItemTemplate>
<asp:Image ID="imgName" imageUrl="<%# Bind("ImageOfUser") %>"></asp:Image>
<asp:Hyperlink ID="hyperLink" Text="<%# Bind("UsersComment") %>" ></asp:Hyperlink>
</ItemTemplate>
<ItemTemplate>
<asp:Label ID="lblMessage" Text="<%# Bind("UsersComment") %>"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

जैसा कि आप छवि और हाइपरलिंक के ऊपर देख सकते हैं, आइटम टेम्पम्पेट के भीतर दोनों हैं, जिसका अर्थ है कि वे ग्रिडव्यू के भीतर एक सेल के भीतर दिखाए जाएंगे।