none
Completar Campos de acordo com uma opção do ComboBox RRS feed

  • Pergunta

  • Boa tarde,
    Gostaria de saber como posso autocompletar campos de um formulário assim que o usuário escolher uma opção de uma combobox...???
    Tenho o seguinte cenário, WSS 3.0, estou criando uma Solução de Gerenciamento de Títulos, aproveitando alguns recurso do Sharepoint - como por exemplo o Calendário, a lista de Tarefas, e outros; possuo um formulário de Devedores e um formulário de títulos. Quando o usuário acessar o formulário de títulos ele vai encontrar uma combobox com todos os devedores carregados nesta combo, daí ele tem outros campos neste form - como por exemplo telefone, e-mail, empresa; deste devedor que esta em outra lista, mas consta neste form de títulos, de acordo com a escolha do cliente, como posso autocompletar estes campos para que assim que escolher o devedor na combobox, apareça os dados deste devedor nos campos referentes ao título que o usuário esta cadastrando. Usei o sharepoint designer para implementar um novo formulário mas não consegui...???
    Aguardando resposta ansiosamente,
    Emerson
    terça-feira, 4 de agosto de 2009 18:20

Respostas

  • Crie uma webpart e use o código a seguir:

    No código abaixo, uso o item Display enumerator SPControlMode, porque neste caso desejo que o formulario seja exibido semelhantemente às paginas DispForm.aspx.

    Você pode usar SPControlMode.New, Edit ou Invalid conforme sua necessidade.

    ---

    Table oTable = new Table();

    protected override void CreateChildControls()
            {
                base.CreateChildControls();

                try
                {
                    oTable.CellPadding = 0;
                    oTable.CellSpacing = 0;

                    SPWeb oWeb = Microsoft.SharePoint.WebControls.SPControl.GetContextWeb(this.Context);
                    SPList oList = oWeb.Lists["NOME DA SUA LISTA"];

                    Controls.Add(oLabel);

                    FormToolBar toolBar = new FormToolBar();
                    toolBar.ControlMode = SPControlMode.Display;
                    toolBar.ListId = oList.ID;

                    TableRow oRow = new TableRow();

                    oTable.Rows.Add(oRow);
                   
                    TableCell oCellLabel = new TableCell();
                    oCellLabel.ColumnSpan = 2;
                    oRow.Cells.Add(oCellLabel);
                    oCellLabel.Controls.Add(toolBar);

                    oRow = new TableRow();
                    oTable.Rows.Add(oRow);

                    oCellLabel = new TableCell();
                    oCellLabel.ColumnSpan = 2;
                    oRow.Cells.Add(oCellLabel);
                    oCellLabel.Controls.Add(CreateEmptyImage(1, 7));

                    foreach (SPField oField in oList.Fields)
                    {
                        if (!oField.Hidden && !oField.ReadOnlyField && oField.Type != SPFieldType.Attachments)
                        {
                            FieldLabel oLabelField = new FieldLabel();
                            oLabelField.ControlMode = SPControlMode.Display;
                            oLabelField.ListId = oList.ID;
                            oLabelField.FieldName = oField.InternalName;

                            oRow = new TableRow();
                            oTable.Rows.Add(oRow);

                            oRow.Style.Add("display", "none");
                           
                            oCellLabel = new TableCell();
                            oRow.Cells.Add(oCellLabel);
                            TableCell oCellControl = new TableCell();
                            oRow.Cells.Add(oCellControl);

                            oCellLabel.Controls.Add(oLabelField);

                            FormField oFormField = new FormField();
                            oFormField.ControlMode = SPControlMode.Display;
                            oFormField.ListId = oList.ID;
                            oFormField.FieldName = oField.InternalName;
                            oCellControl.Controls.Add(oFormField);

                            oCellLabel.CssClass = "ms-formlabel";
                            oCellControl.CssClass = "ms-formbody";
                        }
                    }

                    oRow = new TableRow();
                    oTable.Rows.Add(oRow);

                    oCellLabel = new TableCell();
                    oCellLabel.ColumnSpan = 2;
                    oRow.Cells.Add(oCellLabel);
                    oCellLabel.Controls.Add(CreateEmptyImage(1, 7));

                    List<Control> buttons = new List<Control>();

                    GoBackButton cancelButton = new GoBackButton();
                    cancelButton.ControlMode = SPControlMode.Display;
                    cancelButton.ListId = oList.ID;

                    buttons.Add(cancelButton);

                    Table table = CreateFormButtonBar(buttons.ToArray());

                    TableRow oRowButton = new TableRow();
                    oTable.Rows.Add(oRowButton);

                    TableCell oCellButton = new TableCell();
                    oRowButton.Cells.Add(oCellButton);

                    oCellButton.ColumnSpan = 2;
                    oCellButton.Controls.Add(table);

                    Controls.Add(oTable);
                }
                catch (Exception exc)
                {
                    System.Diagnostics.StackFrame stackFrame = new System.Diagnostics.StackFrame(true);
                    Label lbl = new Label();
                    lbl.Text = "Ocorreu um erro na WebPart " + this.Title + ". " + stackFrame.GetMethod().ToString() + ". " + stackFrame.GetFileLineNumber() + ". " + exc.Message;
                    Controls.Add(lbl);
                }
            }

            private static Table CreateFormButtonBar(params Control[] controls)
            {
                Table table = new Table();
                table.CssClass = "ms-formtoolbar";
                table.CellPadding = 2;
                table.CellSpacing = 2;
                table.BorderWidth = 0;
                table.Width = new Unit(100, UnitType.Percentage);
                TableRow row = new TableRow();
                TableCell cell1 = new TableCell();
                cell1.Width = new Unit(99, UnitType.Percentage);
                cell1.CssClass = "ms-toolbar";
                cell1.Attributes.Add("nowrap", "true");
                row.Cells.Add(cell1);
                Image image = new Image();
                image.ImageUrl = "/_layouts/images/blank.gif";
                image.Width = new Unit(1);
                image.Height = new Unit(18);
                cell1.Controls.Add(image);
                table.Rows.Add(row);

                foreach (Control control in controls)
                {
                    TableCell containerCell = new TableCell();
                    containerCell.CssClass = "ms-toolbar";
                    containerCell.Attributes.Add("nowrap", "true");
                    row.Cells.Add(containerCell);
                    Table containerTable = new Table();
                    containerTable.CellPadding = 0;
                    containerTable.CellSpacing = 2;
                    containerTable.Width = new Unit(100, UnitType.Percentage);
                    TableRow row1 = new TableRow();
                    TableCell cell = new TableCell();
                    cell.HorizontalAlign = HorizontalAlign.Right;
                    cell.Width = new Unit(100, UnitType.Percentage);
                    cell.Attributes.Add("nowrap", "true");
                    cell.Controls.Add(control);
                    row1.Cells.Add(cell);
                    containerTable.Rows.Add(row1);
                    containerCell.Controls.Add(containerTable);
                }

                return table;
            }

    quinta-feira, 6 de agosto de 2009 17:12

Todas as Respostas

  • Emerson,

    nesse caso você vai ter que fugir um pouco do Sharepoint Designer e partir pro Visual Studio.
    Você pode reescrever seu formulário por lá, adicionando os controles e os eventos que você desejar.
    Se não souber por onde começar, me avisa, posso te ajudar.
    terça-feira, 4 de agosto de 2009 23:12
  • Boa tarde Antonio Guilherme,
    Legal vocë ter respondido, já instalei o VS 2008 e o WPSBuilder, já até fiz o exemplo padrão de webpart, mas não construi nenhum formulário ou coisa parecida, como posso estar desenvolvendo isto...??? Agradeceria muito ter uma ajuda... Estou começando a desenvolver agora...
    Obrigado,
    quinta-feira, 6 de agosto de 2009 16:41
  • Crie uma webpart e use o código a seguir:

    No código abaixo, uso o item Display enumerator SPControlMode, porque neste caso desejo que o formulario seja exibido semelhantemente às paginas DispForm.aspx.

    Você pode usar SPControlMode.New, Edit ou Invalid conforme sua necessidade.

    ---

    Table oTable = new Table();

    protected override void CreateChildControls()
            {
                base.CreateChildControls();

                try
                {
                    oTable.CellPadding = 0;
                    oTable.CellSpacing = 0;

                    SPWeb oWeb = Microsoft.SharePoint.WebControls.SPControl.GetContextWeb(this.Context);
                    SPList oList = oWeb.Lists["NOME DA SUA LISTA"];

                    Controls.Add(oLabel);

                    FormToolBar toolBar = new FormToolBar();
                    toolBar.ControlMode = SPControlMode.Display;
                    toolBar.ListId = oList.ID;

                    TableRow oRow = new TableRow();

                    oTable.Rows.Add(oRow);
                   
                    TableCell oCellLabel = new TableCell();
                    oCellLabel.ColumnSpan = 2;
                    oRow.Cells.Add(oCellLabel);
                    oCellLabel.Controls.Add(toolBar);

                    oRow = new TableRow();
                    oTable.Rows.Add(oRow);

                    oCellLabel = new TableCell();
                    oCellLabel.ColumnSpan = 2;
                    oRow.Cells.Add(oCellLabel);
                    oCellLabel.Controls.Add(CreateEmptyImage(1, 7));

                    foreach (SPField oField in oList.Fields)
                    {
                        if (!oField.Hidden && !oField.ReadOnlyField && oField.Type != SPFieldType.Attachments)
                        {
                            FieldLabel oLabelField = new FieldLabel();
                            oLabelField.ControlMode = SPControlMode.Display;
                            oLabelField.ListId = oList.ID;
                            oLabelField.FieldName = oField.InternalName;

                            oRow = new TableRow();
                            oTable.Rows.Add(oRow);

                            oRow.Style.Add("display", "none");
                           
                            oCellLabel = new TableCell();
                            oRow.Cells.Add(oCellLabel);
                            TableCell oCellControl = new TableCell();
                            oRow.Cells.Add(oCellControl);

                            oCellLabel.Controls.Add(oLabelField);

                            FormField oFormField = new FormField();
                            oFormField.ControlMode = SPControlMode.Display;
                            oFormField.ListId = oList.ID;
                            oFormField.FieldName = oField.InternalName;
                            oCellControl.Controls.Add(oFormField);

                            oCellLabel.CssClass = "ms-formlabel";
                            oCellControl.CssClass = "ms-formbody";
                        }
                    }

                    oRow = new TableRow();
                    oTable.Rows.Add(oRow);

                    oCellLabel = new TableCell();
                    oCellLabel.ColumnSpan = 2;
                    oRow.Cells.Add(oCellLabel);
                    oCellLabel.Controls.Add(CreateEmptyImage(1, 7));

                    List<Control> buttons = new List<Control>();

                    GoBackButton cancelButton = new GoBackButton();
                    cancelButton.ControlMode = SPControlMode.Display;
                    cancelButton.ListId = oList.ID;

                    buttons.Add(cancelButton);

                    Table table = CreateFormButtonBar(buttons.ToArray());

                    TableRow oRowButton = new TableRow();
                    oTable.Rows.Add(oRowButton);

                    TableCell oCellButton = new TableCell();
                    oRowButton.Cells.Add(oCellButton);

                    oCellButton.ColumnSpan = 2;
                    oCellButton.Controls.Add(table);

                    Controls.Add(oTable);
                }
                catch (Exception exc)
                {
                    System.Diagnostics.StackFrame stackFrame = new System.Diagnostics.StackFrame(true);
                    Label lbl = new Label();
                    lbl.Text = "Ocorreu um erro na WebPart " + this.Title + ". " + stackFrame.GetMethod().ToString() + ". " + stackFrame.GetFileLineNumber() + ". " + exc.Message;
                    Controls.Add(lbl);
                }
            }

            private static Table CreateFormButtonBar(params Control[] controls)
            {
                Table table = new Table();
                table.CssClass = "ms-formtoolbar";
                table.CellPadding = 2;
                table.CellSpacing = 2;
                table.BorderWidth = 0;
                table.Width = new Unit(100, UnitType.Percentage);
                TableRow row = new TableRow();
                TableCell cell1 = new TableCell();
                cell1.Width = new Unit(99, UnitType.Percentage);
                cell1.CssClass = "ms-toolbar";
                cell1.Attributes.Add("nowrap", "true");
                row.Cells.Add(cell1);
                Image image = new Image();
                image.ImageUrl = "/_layouts/images/blank.gif";
                image.Width = new Unit(1);
                image.Height = new Unit(18);
                cell1.Controls.Add(image);
                table.Rows.Add(row);

                foreach (Control control in controls)
                {
                    TableCell containerCell = new TableCell();
                    containerCell.CssClass = "ms-toolbar";
                    containerCell.Attributes.Add("nowrap", "true");
                    row.Cells.Add(containerCell);
                    Table containerTable = new Table();
                    containerTable.CellPadding = 0;
                    containerTable.CellSpacing = 2;
                    containerTable.Width = new Unit(100, UnitType.Percentage);
                    TableRow row1 = new TableRow();
                    TableCell cell = new TableCell();
                    cell.HorizontalAlign = HorizontalAlign.Right;
                    cell.Width = new Unit(100, UnitType.Percentage);
                    cell.Attributes.Add("nowrap", "true");
                    cell.Controls.Add(control);
                    row1.Cells.Add(cell);
                    containerTable.Rows.Add(row1);
                    containerCell.Controls.Add(containerTable);
                }

                return table;
            }

    quinta-feira, 6 de agosto de 2009 17:12