Search code examples
c#asp.netdotnetnuke

DotNetNuke WebForm Alert Dialog box


I am currently developing a DotNetNuke module. However, I failed to prompt user an alert dialog box in certain situations like record duplication.

I am using the following code to display an alert box in Controller class.

EditForm edForm = new EditForm();
ScriptManager.RegisterClientScriptBlock(edForm, edForm.GetType(), "alertMessage", "alert('Record Inserted Successfully')", true);

The following is my full code.

Form.ascx.cs

void cmdUpdate_Click(object sender, EventArgs e)
{
    UdtController.UpdateRow(Data, ModuleId, False);
}

UdtController.cs

public void UpdateRow(DataSet ds, int rowNr, bool isDataToImport)
{
    var values = new Dictionary<int, string>();
    string strIsUnique = "";
    foreach (DataRow field in ds.Tables[DataSetTableName.Fields].Rows)
    {
        var strColumnName = field[FieldsTableColumn.Title].ToString();
        strIsUnique = field[FieldsTableColumn.Searchable].ToString();

        var strValueColumn = ((!isDataToImport &&
                               ds.Tables[DataSetTableName.Data].Columns.Contains(strColumnName +
                                                                                 DataTableColumn.
                                                                                     Appendix_Original))
                                  ? strColumnName + DataTableColumn.Appendix_Original
                                  : strColumnName);


        if (strIsUnique == "True")
        {
            int uniqueDataCount = FieldController.uniqueData(currentRow[strValueColumn].AsString());

            if (uniqueDataCount == 0)
            {
                if (ds.Tables[DataSetTableName.Data].Columns.Contains(strValueColumn))
                {
                    values.Add(field[FieldsTableColumn.Id].AsInt(), currentRow[strValueColumn].AsString());
                }
            }
            else
            {
                EditForm edForm = new EditForm();
                ScriptManager.RegisterClientScriptBlock(edForm, edForm.GetType(), "alertMessage", "alert('Record Inserted Successfully')", true);
                break;
            }
        }
        else
        {
            if (ds.Tables[DataSetTableName.Data].Columns.Contains(strValueColumn))
            {
                values.Add(field[FieldsTableColumn.Id].AsInt(), currentRow[strValueColumn].AsString());
            }
        }
    }
    FieldController.UpdateData(userDefinedRowId, values);
}

Solution

  • You need to reference the Page, not create a new form.

    Page page = HttpContext.Current.CurrentHandler as Page;   
    ScriptManager.RegisterStartupScript(page, page.GetType(), "alertMessage", "alert('Record Inserted Successfully')", true);
    

    However DNN has it's own message box you could use:

    http://uxguide.dotnetnuke.com/UIPatterns/AlertDialog.html