9/29/09

Validation of Publish button

I want that publish/unpublish command will be performed only if the survey have at least one question.
If the publish button pressed in the zero -question line - the user must get the red warning message:

You cannot publish survey with zero questions


But how to do it? The validate function cannot receive any additional parameters except
object sender, ServerValidateEventArgs e
And we cant even figure out which repeater item sended the command since the publish button not requires any item checkboxses to be checked.

Custom validator:

<asp:CustomValidator ID="CustomValidator2" runat="server"
ErrorMessage="You cannot publish survey with zero questions"
ValidationGroup="zeroQuestions" Display="Dynamic" OnServerValidate="IsZeroQuestions">
</asp:CustomValidator>

It raises the server-validation function IsZeroQuestions
how can this function "know" what the questions number of line(Repeater Item) whose raised it?



Well, it means i need to change the way the Publish/Unpublish button working:
From now it will work this way:
protected void PublishThisSurvey(object sender, RepeaterCommandEventArgs e)
    {
        RepeaterItem ri = Repeater1.Items[e.Item.ItemIndex];
        CheckBox chkBox = (CheckBox)ri.FindControl("CheckBox1");
        chkBox.Checked = true

        Validate("zeroQuestions");

        if (!Page.IsValid)
        {
        CustomValidator2.ErrorMessage = "Cannot publish this
            survey with zero questions";


            chkBox.Checked = false;
            return;

        }


        HiddenField hf;
        hf = (HiddenField)ri.FindControl("surveyID");
        int surveyID = Convert.ToInt32(hf.Value);

HiddenField isPhf = (HiddenField)ri.FindControl("IsPublished_hf");
        bool bIsPublished = Convert.ToBoolean(isPhf.Value);
      

        //turn upside
        bIsPublished = (bIsPublished) ? false : true;
        clsDataAccess myclass = new clsDataAccess();
        myclass.UpdateSurveyPublished(surveyID, bIsPublished);
        Repeater1.DataBind();
    }



and the trigger will be ItemCommand of Repeater:
<asp:Repeater ID="Repeater1" runat="server"
DataSourceID="SurveysSqlDataSource" OnItemCommand="PublishThisSurvey">                                    

Getting started with docker

It is very simple to get started usig docker. All you need to do-is download the docker desktop for your system Once you get docker syste...