i have a menu created using two repeater .Second repeater is bounded inside item data bound of outer repeater. Menu is loaded each time page loaded. when page is loaded two or three time all connection in connection pool is used so it will throw an error .I use data adapter for Loading Menu Content .Ie no Explicit open and close for Connection Still it cause a lot of unclosed connection
<asp:Repeater ID="rpMenu" runat="server" OnItemCommand="rpMenu_ItemCommand"
OnItemDataBound="rpMenu_ItemDataBound">
<ItemTemplate>
<li>
<asp:HiddenField id="hdUrl" runat="server"/>
<asp:LinkButton ID="lnkMainLink" runat="server" CausesValidation="False" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "MenuID") %>' CommandName="lnkMainClick"
Text='<%# DataBinder.Eval(Container.DataItem, "MenuTextEn") %>' >
</asp:LinkButton>
<ul>
<asp:Repeater ID="rpSubMenu" runat="server" OnItemCommand="rpSubMenu_ItemCommand"
OnItemDataBound="rpSubMenu_ItemDataBound">
<ItemTemplate>
<asp:HiddenField runat="server" ID="hdMainMenuID" />
<asp:LinkButton ID="lnkSubLink" runat="server" CausesValidation="False" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "Path") %>' CommandName="lnkSubClick"
Text='<%# DataBinder.Eval(Container.DataItem, "MenuTextEn") %>' >
</asp:LinkButton>
</ItemTemplate>
</asp:Repeater>
</ul>
</li>
</ItemTemplate>
</asp:Repeater>
function called in Firstrepeter'Item DAtabound is
private void bindSubMenu(string id1, Repeater rpSubmenu)
{
try
{
UsersDAL obj = new UsersDAL("current");
int UserTypeID = obj.UserTypeID;
PermissionsDAL objP = new PermissionsDAL();
objP.UserTypeID = UserTypeID;
objP.MenuID = Convert.ToInt32(id1);
DataTable dt = objP.selectSubMenuHavingPermission();
rpSubmenu.DataSource = dt;
rpSubmenu.DataBind();
}
catch (Exception ex)
{
// throw ex;
}
}
public DataTable selectSubMenuHavingPermission()
{
dt = new DataTable();
try
{
cmdobj = new SqlCommand();
cmdobj.CommandType = CommandType.StoredProcedure;
cmdobj.Connection = connobj;
cmdobj.CommandText = "Usp_SubMenuList";
cmdobj.Parameters.AddWithValue("@UserTypeID", UserTypeID);
cmdobj.Parameters.AddWithValue("@MenuID", MenuID);
daobj = new SqlDataAdapter(cmdobj);
daobj.Fill(dt);
}
catch (Exception ex)
{
throw ex;
}
finally
{
}
return dt;
}