DotNetNuke 5 module development tutorial - part 4: The view control

14. February 2010 20:46

To Visual Basic version

A DotNetNuke module usually contains several user controls; view, edit and settings. We will start by creating our view control. As I mentioned in part 2 of this series, the view control is what is displayed to your visitors. The Products view control will be a list of product items belonging to the module instance.
Open ViewProducts.ascx. Delete all content of the file and replace it with this:

<%@ Control Language="C#" Inherits="SipidCode.Modules.Products.ViewProducts" AutoEventWireup="true" CodeBehind="ViewProducts.ascx.cs" %>
<asp:ListView ID="ProductList" runat="server" OnItemDataBound="ProductList_ItemDataBound">
 <LayoutTemplate>
  <div class="sc-productlist-container">
   <asp:PlaceHolder ID="itemPlaceholder" runat="server"></asp:PlaceHolder>
  </div>
 </LayoutTemplate>
 <ItemTemplate>
  <asp:Panel ID="ProductContainer" runat="server" CssClass="sc-product-container">
   <asp:Label ID="ProductName" runat="server" CssClass="sc-product-name" Text='<%# Eval("Name") %>'></asp:Label>
   <asp:Label ID="ProductDescription" runat="server" CssClass="sc-product-description" Text='<%# Eval("Description") %>'></asp:Label>
  </asp:Panel>
 </ItemTemplate>
</asp:ListView>

You might notice that the ListView tag has a green squiggly under it and that the tooltip tells us that it is not a known element. This is because the project defaults to target .NET 2.0. The ListView control appeared in version 3.5 of the .NET framework, so we need to set that for the project.

Open the project properties by right-clicking it in solution explorer and selecting Properties from the context menu. In the Application tab, select “.NET Framework 3.5” in the Target Framework drop-down. When selected, a messagebox appears telling us that the project has to be closed and reopened. Click “Yes” in the message box.
Once the project is reopened you will notice that you now have a web.config file in there. If you paid any attention at all in part 2, you know you don’t want that. Delete it now.

Open ViewProducts.ascx.cs and replace the Page_Load method with the following:

protected void Page_Load(object sender, System.EventArgs e)
{
 try
 {
  ProductsController controller = new ProductsController();
  List<ProductsInfo> products;
  // Get the product list.
  products = controller.GetProducts(ModuleId);
  // Bind the product list to the ListView control.
  ProductList.DataSource = products;
  ProductList.DataBind();
 }
 catch (Exception ex)
 {
  // Module failed to load
  Exceptions.ProcessModuleLoadException(this, ex);
 }
}

Delete the method lstContent_ItemDataBound.
Add the method ProductList_ItemDataBound, looking like this:

protected void ProductList_ItemDataBound(object sender, ListViewItemEventArgs e)
{
 if (e.Item.ItemType == ListViewItemType.DataItem)
 {
  ProductsInfo prod = (ProductsInfo)((ListViewDataItem)e.Item).DataItem;
  if (this.PortalSettings.UserMode == DotNetNuke.Entities.Portals.PortalSettings.Mode.Edit)
  {
   Panel prodContainer = (Panel)e.Item.FindControl("ProductContainer");
   System.Web.UI.HtmlControls.HtmlAnchor editLink = new System.Web.UI.HtmlControls.HtmlAnchor();
   editLink.HRef = EditUrl("ItemId", prod.ItemId.ToString(), "EditItem");
   editLink.Style.Add("width", "16px");
   editLink.Style.Add("height", "16px");
   editLink.Style.Add("display", "inline-block");
   editLink.Style.Add("background-image", "url(/images/edit.gif)");
   editLink.Title = "Edit product";
   prodContainer.Controls.AddAt(0, editLink);
  }
 }
}

In ProductList_ItemDataBound we check if the module is viewed in edit mode. In that case we add a link to the edit page (which we have not created a control for yet). The URL to the edit page is created by calling the EditUrl method (defined in PortalModuleBase).

This particular variant of the method will return an URL with the query string parameter "ItemId" carrying the value of the curent product item. The last method parameter will tell the edit page to show the edit control registered with the key "EditItem". You will learn more about that in the next part.

By adding edit links to the items in the list we have created a way to edit existing items, but how about creating new items then?
The ViewProducts class implements the interface IActionable, which defines the property ModuleActions. Look in the region “Optional Interfaces” for the implementation. The property returns a ModuleActionCollection object containing the actions that can be performed on the module. Each action is represented by an icon (or an entry in the module title flip-out menu) when the module is viewed in edit mode.
You can return several actions for a module, but for now we are content with the “add content” action we got from the template.
We will just make one small adjustment: locate the call to EditUrl() and give it the string "EditItem" as parameter. The property implementation should then look like this:

public ModuleActionCollection ModuleActions
{
 get
 {
  ModuleActionCollection Actions = new ModuleActionCollection();
  Actions.Add(GetNextActionID(), Localization.GetString(ModuleActionType.AddContent, this.LocalResourceFile),
     ModuleActionType.AddContent, "", "add.gif", EditUrl("EditItem"), false, DotNetNuke.Security.SecurityAccessLevel.Edit,
   true, false);
  return Actions;
 }
}

In Page_Load you might see a squiggly under the references to ProductList.

ProductList variable not defined

This is because the designer has not updated itself since we pasted the contents into ViewProducts.ascx. To force an update, open ViewProducts.ascx, make some small change like adding or deleting a space or something and save the file. This usually does the trick.

In part 3 we made a lot of changes in the data layer. Due to this there is a lot of broken code in the EditProducts and Settings controls. To sidestep this we just delete the broken code for now and create working code in coming posts.
In EditProducts.ascx.cs, delete the contents of methods Page_Load, cmdUpdate_Click and cmdDelete_Click. Now we should be able to successfully compile the project again and are ready to try out the view in DotNetNuke.
We are going to set up the module manually in the system so we can run it, so open your browser and point it to your local DotNetNuke installation. Log in with the Host account.

We begin with setting up the database, so select SQL from the Host menu. In Visual Studio, open the file 01.00.00.SqlDataProvider. Copy all text and paste it into DotNetNuke. Make sure Run as Script is checked and click Execute

Execute SQL

From the Host menu, select Module Definitions. Make sure Edit mode is selected.

Edit mode selection

Select Create New Module from the Module Definitions flip-out menu.

Module definition menu

In the Create New Module screen, select/enter the following settings:

Create module screen

Then click Create Module.

You should now be able to add the module Products to a page. Go ahead and try it.
There will of course not be any products in the list, since we have not defined any yet. As you can see there is an Add Content link in the module (corresponding to the module's action we looked at earlier in this post.), but there is no Edit control so it will only lead to a blank page.
In the next post we will create that Edit control so we can put some products into the list.

Tags: , ,

DotNetNuke | Modules | Tutorials

Comments

3/2/2010 7:55:50 AM #

Kim

I love your blog, dont find many that are so simple, especially about dotnetnuke.
It is nice to see that someone really understands.

Kim Colombia |

3/2/2010 9:25:48 AM #

Johan Seppäläinen

I'm really glad you find it useful! Thanks for the feedback. Helps me know if I'm doing it right.

Johan Seppäläinen Sweden |

3/2/2010 2:37:09 PM #

Daniel Millions

Do you care if I quote you on my blog if I link back to your website?

Daniel Millions United States |

3/2/2010 2:48:48 PM #

Johan Seppäläinen

Quoting a few sentences and linking back here is fine with me. If you have more quoting than that in mind, I would prefer if you just link to my blog.

Johan Seppäläinen Sweden |

4/20/2010 4:42:15 PM #

cheverlet

Hi web site owner, commenters and everybody else !!! The site is positively brilliant! A large amount of wonderful information and inspiration, both of which all of us need to have! Keep 'em coming... you all carry out such a great job at such Concepts... can not explain to you just how much I, for one appreciate all you do!

cheverlet United States |

4/30/2010 6:27:38 PM #

Asperto

Hi
Great Tutorial
However I had a problem with the edit icon url:-

editLink.Style.Add("background-image", "url(/images/edit.gif)");

I don't think this can work.  I tried using :-
editLink.Style.Add("background-image", "url(~/images/edit.gif)");
Which should reference the root path of the portal.

but that didn't work either.  I tested it successfully with the fully qualified url of the parent DNN installation, but obviously, that's not an optimal solution.

Also, I couldn't get the Add Content link to work with the "EditItem" param.
It started to work when I left it blank.

Asperto United Kingdom |

5/1/2010 12:14:07 AM #

Asperto

I got the edit image working but had to do this:-
      string applicationPath = DotNetNuke.Common.Globals.ApplicationPath;
...
  editLink.Style.Add("background-image",
"url(" + applicationPath + "/images/edit.gif)"); //pencil icon

That works great, there is no guesswork, and it's testable.
Thanks for excellent article.
A

Asperto United Kingdom |

5/14/2010 2:24:26 AM #

csmac

Asperto that is exactly what I was looking for,
Thanks for the followup on your first comment Smile

Great DotNetNuke Articles, keep them up.

csmac New Zealand |

5/24/2010 12:43:04 PM #

John

Hi,

I really find your tutorial amazing!
I'm trying to apply your guide to a new DNN module which uses a FormView component instead of a ListView, but I'm stuck in the DataBound part.
I know that the 'Item' concept is not applicable in a FormView component, so what exactly am I supposed to check in my 'DataBound' event handler?

Thanks a lot for your help.

John Greece |

5/24/2010 6:03:51 PM #

Johan

John, I'm happy you like it!

Please forgive me if I misunderstand your question.
If you don't have anything special you need to do when the data is bound, you can safely skip handling the DataBound event.

Johan Sweden |

5/24/2010 6:24:28 PM #

John

Hi Johan,

first I have to thank you for your reply.

What I'm trying to achieve is a simple Testimonials module. It's not going to have anything fancy. I have 2-3 fields (what someone said, who is he/she and which company is he/she representing).

All I want to do is to have a FormView where I will be able to display one record at a time.

As far as the rest of the records are concerned, I currently don't have anything specific in my mind, but I'm sure that you could give some piece of advice!!

Thanks in advance.

John Greece |

10/2/2010 12:31:33 AM #

fred

Great blog post! I'm just starting to learn DNN module development and this has helped me out quite a bit.
I have two suggestions, and one question.
The suggestions:
1) On page 2, "Setting up the project", you have users globally find and replace "YourCompany" with "SipidCode". When I did that, the EditProducts.acsx.designer.cs file got messed up after I saved all the changed documents. The way to fix this is to copy out that file, make the global find & replace, save all the files, then copy the old contents from EditProducts.acsx.designer.cs back in and manually change "YourCompany" to "SipidCode". The reason why is explained here:
www.dotnetnuke.com/.../Default.aspx

2) In "Part 4: The View Control" you mention that ProductList might have squigly lines. No matter how many times I edited and resaved the ViewProducts.ascx, the lines didn't go away. I had to change the .net target version in the project properties page in order to create a web.config file. Then I was able to do the change/save trick on the ViewProducts.ascx file and it worked. After that, I deleted the web.config file and everything compiled properly from there.

My question is this: On the same page (Part 4: The View Control) I log in to my local DNN installation and follow the instructions to create a module. Unfortunately, "Products" doesn't show up in the Module Folder drop down. I've got a virtual directory for "Products" created in IIS7, and have messed around with creating it as an application, making a virtual folder, deleting it all together and creating a shortcut link in the DesktopModules directory, all to no avail. I changed the security on the Products directory to give the Network Service account full control, and that didn't work either. What is the trick to getting the "Products" directory to display in the Module Folder drop down?

Thanks for your great blog post!

fred United States |

10/3/2010 6:42:06 PM #

fred

To answer my own question, I moved the Products folder from the VS 2008 Projects directory to the wwwroot\dnn\DesktopModules directory and it showed up.

fred United States |

10/7/2010 10:20:36 AM #

Phi Hoang Hai

@fred : Thanks you

Phi Hoang Hai Vietnam |

12/27/2010 9:38:59 AM #

Ahmed

I was trying to change .net target version in the project properties page to 3.5 in order to make the Listview control ok, but I had the following error:

TargetFramework:
Exception fo type 'System.Runtime.InteropServices.ExternalException' was thrown

I make a search: they were talking about closing and reopining the visual studio reopining the solution of Products again, but i got that the project has no virtual directory, do u want to make one? I click yes, but it gives me the following error msg box, "Creation of the virtual directory http://localhost/DesktopModules/Products failed with the error: The URL 'http://localhost/DesktopModules/Products' is already mapped to a different folder location"...

any hint please!?!
and thanks for the blog post

Ahmed Jordan |

12/27/2010 9:47:26 AM #

Ahmed

ok solved, I didn't notice the file found at the IIS of Desktop Modules so i deleted it and reopened my solution, but on the other hand, I can't open the ViewProducts.ascx page, the VS just hangs!?!

Ahmed Jordan |

12/29/2010 7:48:06 AM #

Lipu

When I followed this tutorial, the edit icon is not shown. After some struggle, I found an article that helped me solve the problem. (www.dnncreative.com/.../Default.aspx)

The solution is to remove the forward slash before images.
Chnage:
editLink.Style.Add("background-image", "url(/images/edit.gif)");
To:
editLink.Style.Add("background-image", "url(images/edit.gif)");

Lipu United States |

2/24/2011 3:04:36 PM #

Showing error after following the steps until Part 4

Error: Products is currently unavailable.
DotNetNuke.Services.Exceptions.ModuleLoadException: c:\inetpub\wwwroot\dnn\DesktopModules\Products\ViewProducts.ascx(4): error CS1061: 'ASP.desktopmodules_products_viewproducts_ascx' does not contain a definition for 'ProductList_ItemDataBound' and no extension method 'ProductList_ItemDataBound' accepting a first argument of type 'ASP.desktopmodules_products_viewproducts_ascx' could be found (are you missing a using directive or an assembly reference?) ---> System.Web.HttpCompileException: c:\inetpub\wwwroot\dnn\DesktopModules\Products\ViewProducts.ascx(4): error CS1061: 'ASP.desktopmodules_products_viewproducts_ascx' does not contain a definition for 'ProductList_ItemDataBound' and no extension method 'ProductList_ItemDataBound' accepting a first argument of type 'ASP.desktopmodules_products_viewproducts_ascx' could be found (are you missing a using directive or an assembly reference?) at System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath) at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) at System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) at System.Web.Compilation.BuildManager.GetVPathBuildResult(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) at System.Web.UI.TemplateControl.LoadControl(VirtualPath virtualPath) at System.Web.UI.TemplateControl.LoadControl(String virtualPath) at DotNetNuke.UI.ControlUtilities.LoadControl[T](TemplateControl containerControl, String ControlSrc) at DotNetNuke.UI.Modules.ModuleHost.LoadModuleControl() --- End of inner exception stack trace ---






Any suggestions



Showing error after following the steps until Part 4 India |

2/24/2011 8:39:19 PM #

Johan

It seems like you have not implemented the handler for the item data bound event.

Johan Sweden |

2/26/2011 12:53:29 PM #

Showing error after following the steps until Part 4

Now working thanks for help Johan

Showing error after following the steps until Part 4 India |

3/9/2011 3:59:50 PM #

Erik

Hi,
Thanks for your clear tutorial! However I don't get the ViewProducts running - I get the following error when trying to view a page with the module on it and this really does not help me to find the cause. Do you have any clue?
I am running Visual Studio Web Developer 2010 Express, IIS 7, DNN 05.06.01
Thanks in advance!
Erik

Error: is currently unavailable.
DotNetNuke.Services.Exceptions.ModuleLoadException: Could not load type 'SipidCode.Modules.Products.ViewProducts'. ---> System.Web.HttpParseException: Could not load type 'SipidCode.Modules.Products.ViewProducts'. ---> System.Web.HttpParseException: Could not load type 'SipidCode.Modules.Products.ViewProducts'. ---> System.Web.HttpException: Could not load type 'SipidCode.Modules.Products.ViewProducts'. at System.Web.UI.TemplateParser.GetType(String typeName, Boolean ignoreCase, Boolean throwOnError) at System.Web.UI.TemplateParser.ProcessInheritsAttribute(String baseTypeName, String codeFileBaseTypeName, String src, Assembly assembly) at System.Web.UI.TemplateParser.PostProcessMainDirectiveAttributes(IDictionary parseData) --- End of inner exception stack trace --- at System.Web.UI.TemplateParser.ProcessException(Exception ex) at System.Web.UI.TemplateParser.ParseStringInternal(String text, Encoding fileEncoding) at System.Web.UI.TemplateParser.ParseString(String text, VirtualPath virtualPath, Encoding fileEncoding) --- End of inner exception stack trace --- at System.Web.UI.TemplateParser.ParseString(String text, VirtualPath virtualPath, Encoding fileEncoding) at System.Web.UI.TemplateParser.ParseReader(StreamReader reader, VirtualPath virtualPath) at System.Web.UI.TemplateParser.ParseFile(String physicalPath, VirtualPath virtualPath) at System.Web.UI.TemplateParser.ParseInternal() at System.Web.UI.TemplateParser.Parse() at System.Web.UI.TemplateParser.Parse(ICollection referencedAssemblies, VirtualPath virtualPath) at System.Web.Compilation.BaseTemplateBuildProvider.get_CodeCompilerType() at System.Web.Compilation.BuildProvider.GetCompilerTypeFromBuildProvider(BuildProvider buildProvider) at System.Web.Compilation.BuildProvidersCompiler.ProcessBuildProviders() at System.Web.Compilation.BuildProvidersCompiler.PerformBuild() at System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath) at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) at System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) at System.Web.Compilation.BuildManager.GetVPathBuildResult(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) at System.Web.UI.TemplateControl.LoadControl(VirtualPath virtualPath) at System.Web.UI.TemplateControl.LoadControl(String virtualPath) at DotNetNuke.UI.ControlUtilities.LoadControl[T](TemplateControl containerControl, String ControlSrc) at DotNetNuke.UI.Modules.ModuleHost.LoadModuleControl() --- End of inner exception stack trace ---

Erik Netherlands |

3/10/2011 11:56:54 AM #

Johan

Hello Erik,
Have you checked that the DLL file you get when you compile your module really ends up in the bin directory of your DotNetNuke installation?

Johan Sweden |

8/17/2011 5:38:41 PM #

swapnil

Error: is currently unavailable.
DotNetNuke.Services.Exceptions.ModuleLoadException: d:\hshome\c310886\dcslit.com\DesktopModules\CustomerInfo\ShiftsReport.ascx.cs(280): error CS1729: 'Shift' does not contain a constructor that takes '1' arguments ---> System.Web.HttpCompileException: d:\hshome\c310886\dcslit.com\DesktopModules\CustomerInfo\ShiftsReport.ascx.cs(280): error CS1729: 'Shift' does not contain a constructor that takes '1' arguments at System.Web.Compilation.AssemblyBuilder.Compile() at System.Web.Compilation.BuildProvidersCompiler.PerformBuild() at System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath) at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) at System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) at System.Web.Compilation.BuildManager.GetVPathBuildResult(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) at System.Web.UI.TemplateControl.LoadControl(VirtualPath virtualPath) at System.Web.UI.TemplateControl.LoadControl(String virtualPath) at DotNetNuke.UI.ControlUtilities.LoadControl[T](TemplateControl containerControl, String ControlSrc) at DotNetNuke.UI.Modules.ModuleHost.LoadModuleControl() --- End of inner exception stack trace ---

swapnil India |

8/17/2011 5:38:56 PM #

swapnil

help on this issue

swapnil India |

9/18/2011 5:44:29 PM #

jfitz1959

This a great tutorial and it's helped me tremendously. Since DNN 6 came out I think possibly (since I'm new to DNN) that the steps to enable edit mode when creating the module may have changed. While I've figuerd out where the create module section is now located, I haven't determined where the settings path is for "edit/view mode". Any possibility you know how to set this in DNN 6?

jfitz1959 United States |

11/27/2011 3:58:54 PM #

gerry

Any solution to this question re: modules and dnn6?  I too suspect changes to module management

gerry Canada |

11/27/2011 8:37:31 PM #

gerry

Oh .... found it ... just use the extension under host and add a new module. (then follow the instructions ... just pick Controls when Where the module is from)  

gerry Canada |

10/24/2011 11:50:31 PM #

Luis

Great Tutorial.
I'm newbie to listview and this sample is great, but I have a few issues still to solve.
when i need to edit a row or insert a new one, I need to allow a upload image and add calendar for start and end periods.
More or less what I have is
<EditItemTemplate>
.
.
           <td>
                <asp:TextBox ID="DateStartTextBox" runat="server"
                    Text='<%# Bind("DateStart") %>' readonly="true"/>
                <asp:Image ID="DateStartCalendarImage"  runat="server" ImageUrl="~/Images/Calendar.png" />
            </td>
            <td>
                <asp:TextBox ID="DateEndTextBox" runat="server"
                    Text='<%# Bind("DateEnd") %>' readonly="true" />
                <asp:Image ID="DateEndCalendarImage"  runat="server" ImageUrl="~/Images/Calendar.png" />
            </td>


Then in the codebehind:
protected void lv_OnItemEditing(Object sender, System.EventArgs e)
{
            ListViewEditEventArgs ee = (ListViewEditEventArgs)e;
            ListViewItem item = lv.Items[ee.NewEditIndex];
            Image imgDateStart = (Image)item.FindControl("DateStartCalendarImage");
            Image imgDateEnd = (Image)item.FindControl("DateEndCalendarImage");

            string pathFromDate = DotNetNuke.Common.Utilities.Calendar.InvokePopupCal((TextBox)item.FindControl("DateStartTextBox"));
            imgDateStart.Attributes.Add("OnClick", pathFromDate);

            string pathToDate = DotNetNuke.Common.Utilities.Calendar.InvokePopupCal((TextBox)item.FindControl("DateEndTextBox"));
            imgDateEnd.Attributes.Add("OnClick", pathToDate);
}

When I try the code above I get error
DotNetNuke.Services.Exceptions.PageLoadException: Object reference not set to an instance of an object. ---> System.NullReferenceException: Object reference not set to an instance of an object. at DotNetNuke.Common.Utilities.Calendar.InvokePopupCal(TextBox Field) at ic.dnn.lv_CouponsAdmin.View.lv_OnItemEditing(Object sender, EventArgs e) in …\View.ascx.cs:line 130
Being line 130
string pathFromDate = DotNetNuke.Common.Utilities.Calendar.InvokePopupCal((TextBox)item.FindControl("DateStartTextBox"));

I think that is obvious that the problem is because when DNN renders the page it changes the IDs of the controls in the .ascx DateStartTextBox becomes something dnn_ctr863_View_lv_ctrl0_DateStartTextBox
So my question is: how can I find what is the rendered control id?
Thanks in advance

Luis Israel |

12/20/2011 11:22:21 AM #

Deepak

Hi Johan,

       Nice tutorial man...keep it up..one of the finest and simplest but yet full of information article.

I was following your guidelines and now I am stuck at a point.
The problem starts from here:

(From the Host menu, select Module Definitions. Make sure Edit mode is selected.

[Edit mode selection]

Select Create New Module from the Module Definitions flip-out menu.

[Module definition menu]

In the Create New Module screen, select/enter the following settingsSmile

I didn't find any module definition link in host menu. I don't know if its a version change. I am using 06.01.02 (98).

Please suggest...
Thanks
Deepak

Deepak India |

12/22/2011 3:22:43 PM #

Rohan


Hi all ,
I want to remove the Action from ActionMenuCollection.
Please Help me.

Rohan India |

12/26/2011 9:48:24 AM #

Paul

Hi all,

The "add content" action doesn't appear for me.
I debugged to see the url of it and if I follow the url I can add products and they appear. Just action menu with the "add content" action doesn't appear.
Please help me.

Paul Rusu

Paul Romania |

5/11/2012 5:02:25 AM #

pingback

Pingback from duyanhpham.wordpress.com

HÆ°á»›ng dẫn viết module DNN 5 – DotNetNuke 5 module development tutorial  « Phạm Duy Anh

duyanhpham.wordpress.com |

9/28/2012 12:38:20 AM #

Bryan

Hiya,

Great tutorial.  But I am having a little trouble here, and maybe others are two.  I believe the core issue is that I am using DNN 6.02.03 which is a different beast than 5.0.  I have gotten everything to work except...

editLink.HRef = EditUrl("ItemId", issue.ItemId.ToString(), "EditItem");

I have seen various people have posted on the use of "Edit" vs "EditItem".

This appears to be part of my problem.  Changing "EditItem" to "Edit" brings up a model popup.  But then it just hangs.

I really don't care if the edit item brings up a popup or redirects.  I would just like to find a way to edit individual items.

Any help you can give would be most appreciated.

Thanks,

Bryan Myers
Winning Solutions, Inc.
Bmyers@winningsolutionsinc.com
www.winningsolutionsinc.com

Bryan United States |

9/25/2013 11:18:42 AM #

thilip

i want more explanation

thilip India |

9/25/2013 11:19:48 AM #

thilip

i need where is to change this YourCompany.Modules. in DotNetNuke

thilip India |

Comments are closed

About the addict

Johan Seppäläinen lives in Uppsala, Sweden. He spends most of his days working as a systems architect/developer, specialized in solutions built on Microsoft platforms.
Occasionally there is time for some recreational coding, when he pursues optimal solutions and code zen, mainly in C#. When he is not writing in this blog, that is.