उपयोगकर्ता नियंत्रण में, मुझे एक अपडेटपेनल के अंदर एक दोहराया गया है (जो आईडी मॉडलपॉपअप एक्स्टेंडर के अंदर प्रदर्शित होता है। पुनरावर्तक माईडीटीओ ऑब्जेक्ट्स की सरणी सूची का उपयोग करके डाटाबेस है। इसके लिए दो बटन हैं सूची में प्रत्येक आइटम। ImageURL और CommandArgument को बाध्य करने पर सेट किया गया है।अपडेट पैनेल, रिपेटर, डाटाबाइंडिंग समस्या
यह कोड पहली बार ठीक काम करता है लेकिन इसके बाद कमांडअर्गमेंट गलत है। ऐसा लगता है कि डिस्प्ले सही तरीके से अपडेट किया गया है लेकिन डीटीओ नहीं है और भेजा CommandArgument एक है कि बस हटा दिया गया है है।
किसी कोड के साथ कोई समस्या है सकते हैं?
संपादित करें: मैंने अभी कोड में एक CollapsiblePanelExtender जोड़ा है। जब मैं अब एक आइटम हटाता हूं और पैनल का विस्तार करता हूं, तो आइटम जिसे पहले हटा दिया गया था (और डिस्प्ले से चला गया) वापस आ गया है। ऐसा लगता है कि पुनरावर्तक को बोनेट के नीचे सही ढंग से पुनर्निर्मित नहीं किया गया है।
ASCX
<asp:UpdatePanel ID="ViewDataDetail" runat="server" ChildrenAsTriggers="true">
<Triggers>
<asp:PostBackTrigger ControlID="ViewDataCloseButton" />
<asp:AsyncPostBackTrigger ControlID="DataRepeater" />
</Triggers>
<ContentTemplate>
<table width="100%" id="DataResults">
<asp:Repeater ID="DataRepeater" runat="server" OnItemCommand="DataRepeater_ItemCommand" OnItemDataBound="DataRepeater_ItemDataBound">
<HeaderTemplate>
<tr>
<th><b>Name</b></th>
<th><b> </b></th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<b><%#((MyDTO)Container.DataItem).Name%></b>
</td>
<td>
<asp:ImageButton CausesValidation="false" ID="DeleteData" CommandName="Delete" runat="server" />
<asp:ImageButton CausesValidation="false" ID="RunData" CommandName="Run" runat="server" />
</td>
</tr>
<tr>
<td colspan="2">
<table>
<tr>
<td>Description : </td>
<td><%#((MyDTO)Container.DataItem).Description%></td>
</tr>
<tr>
<td>Search Text : </td>
<td><%#((MyDTO)Container.DataItem).Text%></td>
</tr>
</table>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
</ContentTemplate>
</asp:UpdatePanel>
कोड-पीछे
public DeleteData DeleteDataDelegate;
public RetrieveData PopulateDataDelegate;
public delegate ArrayList RetrieveData();
public delegate void DeleteData(String sData);
protected void Page_Load(object sender, EventArgs e)
{
//load the initial data..
if (!Page.IsPostBack)
{
if (PopulateDataDelegate != null)
{
this.DataRepeater.DataSource = this.PopulateDataDelegate();
this.DataRepeater.DataBind();
}
}
}
protected void DataRepeater_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "Delete")
{
if (DeleteDataDelegate != null)
{
DeleteDataDelegate((String)e.CommandArgument);
BindDataToRepeater();
}
}
else if (e.CommandName == "Run")
{
String sRunning = (String)e.CommandArgument;
this.ViewDataModalPopupExtender.Hide();
}
}
protected void DataRepeater_ItemDataBound(object source, RepeaterItemEventArgs e)
{
RepeaterItem item = e.Item;
if (item != null && item.DataItem != null)
{
MyDTO oQuery = (MyDTO)item.DataItem;
ImageButton oDeleteControl = (ImageButton) item.FindControl("DeleteData");
ImageButton oRunControl = (ImageButton)item.FindControl("RunData");
if (oDeleteControl != null && oRunControl !=null)
{
oRunControl.ImageUrl = "button_expand.gif";
oRunControl.CommandArgument = "MyID";
if (oQuery !=null)
{
//do something
}
oDeleteControl.ImageUrl = "btn_remove.gif";
oDeleteControl.CommandArgument = "MyID";
}
}
}
public void BindDataToRepeater()
{
this.DataRepeater.DataSource = this.PopulateDataDelegate();
this.DataRepeater.DataBind();
}
public void ShowModal(object sender, EventArgs e)
{
BindDataToRepeater();
this.ViewDataModalPopupExtender.Show();
}
क्या आपके 'ItemDataBound' हैंडलर से कोड गुम है? उस विधि के अंदर, आप 'माईडीटीओ' चर ('oQuery') घोषित करते हैं और फिर इसका कभी भी उपयोग नहीं करते हैं। –
क्षमा करें, हाँ, मैंने इसे ब्रेवटी –