Lorsque j'ajoute une nouvelle ligne à une grille de kendo en utilisant js (code partiel ci-dessous), le texte ne rentre pas dans la ligne, comme vous pouvez le voir image: .L'espace de texte ne tient pas lors de l'ajout d'une nouvelle ligne à la grille de Kendo
Comment puis-je le résoudre?
var dataSource = section.find(".k-grid").getKendoGrid().dataSource;
dataSource.add({
Description: description.val(),
StepTimer: timer
});
Merci.
EDIT: Je ajouté plus d'informations
règles pour les colonnes css
.recipe-steps-grid .step-description {
max-height: 60px;
overflow: hidden;
white-space: pre-wrap;
margin-top: 0;
margin-bottom: 0;
text-indent: 0;
text-align: left;
font-family: inherit;
font-size: inherit;
color: inherit;
border: none;
background-color: inherit;
padding: 0;
}
.recipe-steps-grid .step-order-col, .recipe-steps-grid .step-description-col {
vertical-align: top;
}
.recipe-steps-grid tr.k-state-selected .step-order-col, .recipe-steps-grid tr.k-state-selected .step-description-col {
vertical-align: middle;
}
.recipe-steps-grid {
font-size: 13px;
color: #342922;
margin: 0 -30px;
}
.recipe-steps-grid .step-order-col {
vertical-align: top;
color: #9d9d9d;
font-size: 11px;
}
.recipe-steps-grid .step-order-col,
.recipe-steps-grid .step-description-col {
vertical-align: top;
}
.recipe-steps-grid tr.k-state-selected .step-order-col,
.recipe-steps-grid tr.k-state-selected .step-description-col {
vertical-align: middle;
}
Kendo Grille:
@(Html.Kendo().Grid<RecipeStepsViewModel>()
.Name(gridName)
.HtmlAttributes(new { @class = "recipe-steps-grid" })
.Columns(columns =>
{
columns.Template(t => { }).ClientTemplate("#= generateHandleTemplate() #").HtmlAttributes(new { @class = "dummy-col" }).Width("30px");
columns.Template(t => { }).ClientTemplate("STEP #= StepOrder #").HtmlAttributes(new { @class = "step-order-col" }).Width("50px");
columns.Bound(p => p.Description).ClientTemplate("#= generateStepDescriptionTemplate(Description) #")
.HtmlAttributes(new { @class = "step-description-col" }).Width("100%");
columns.Bound(p => p.StepTimer).ClientTemplate("#= generateTimerTemplate(StepTimer) #").HtmlAttributes(new { @class = "right-cell" }).Width("80px");
columns.Template(t => { }).ClientTemplate("#= generateDeleteTemplate(" + isLocked.ToString().ToLower() + ") #").HtmlAttributes(new { @class = "dummy-col" }).Width("30px");
})
.DataSource(dataSource => dataSource
.Ajax()
.Batch(true)
.ServerOperation(false)
.Read(read => read.Action("GetRecipeSteps", "RecipeSteps", new { sectionId = Model.Item1 }).Data("getLanguage"))
.Create(create => create.Action("CreateRecipeStep", "RecipeSteps"))
.Update(update => update.Action("UpdateRecipeStep", "RecipeSteps"))
.Destroy(destroy => destroy.Action("DeleteRecipeStep", "RecipeSteps"))
.Model(model =>
{
model.Id(a => a.Id);
model.Field(a => a.Description).Editable(true);
model.Field(a => a.StepTimer).Editable(true);
})
)
.Events(e =>
{
e.Save("onStepSave");
e.DataBound("onStepDatabound");
e.Change("onStepRowSelection");
})
.Selectable(s => s.Mode(GridSelectionMode.Single))
.Editable(editable => editable.Mode(GridEditMode.InCell)
.CreateAt(GridInsertRowPosition.Bottom))
)
@(Html.Kendo().Sortable()
.For("#" + gridName)
.ConnectWith(".recipe-steps-grid")
.Filter("table > tbody > tr:not(.k-grid-edit-row)")
.Handler("table > tbody .drag-handle-icon")
.Cursor("move")
.Disabled(".no-drag")
.HintHandler("noHint")
.PlaceholderHandler("placeholder")
.ContainerSelector(".section-container[data-type=recipe-steps]")
.Events(events => events.Change("onStepSort"))
)
@{
if (Model.Item3 && !Convert.ToBoolean(isLocked.ToString().ToLower()))
{
<table class="add-recipe-step">
<colgroup>
<col class="add-colgroup" />
<col class="description-colgroup" />
<col class="timer-colgroup" />
</colgroup>
<tr>
<td class="centered-cell"><img class="add-btn" src='@Url.Content("~/Content/Images/grey-plus-thin.png")'></td>
<td>
<input class="input-box" type="text" placeholder='@Resources.placeholderNewRecipeStep' name="description" />
</td>
<td class="timer">
@(Html.Kendo().TimePicker()
.Name("timer-" + guid)
.HtmlAttributes(new { @class = "gl-timer" })
.Format("mm:ss")
.Interval(1)
.Value("00:00:00")
.Min("00:00:00")
.Max("00:59:00")
)
</td>
</tr>
</table>
}
}
js:
function generateStepDescriptionTemplate(text) {
var bold = /\*(.*?)\*/gm;
var html = text.replace(bold, '<span class="emph-word">$1</span>');
return "<pre class='step-description'>" + html + "</pre>";
}
Au-dessus de la grille de kendo, il existe une classe div appelée "section recipe-steps-section". L'idée est d'ajouter une étape à une recette. Le recipe-steps-grid a 5 colonnes: la première est la poignée de sorte que l'utilisateur peut faire glisser l'étape pour changer son ordre. La deuxième colonne est le numéro de commande de l'étape de recette, suivie de la description de l'étape de recette (c'est celle que je veux augmenter l'espace de texte). La colonne suivante indique le temps nécessaire pour cuisiner. La dernière colonne a la possibilité de supprimer cette étape. La grille de kendo dispose également d'une barre d'outils à la fin pour ajouter une nouvelle étape avec la description de l'étape et le temps de l'étape (classe "add-recipe-step").
Cela ressemble à une question de css. Pourriez-vous s'il vous plaît provice votre code? –
@AnastasiosSelmanis Pour la description d'une colonne de la grille, ceci est le css: '.recipe-steps-grid .step-description { hauteur maximale: 60px; dépassement: masqué; blanc-espace: pré-emballage; marge supérieure: 0; marge inférieure: 0; texte-tiret: 0; text-align: à gauche; famille de polices: inherit; taille de police: inherit; couleur: hériter; bordure: aucune; background-color: hériter; remplissage: 0; } ' – Rute
Et ceci: ' .recipe étapes grille-.step ordre col, .recipe étapes-grille .step-description-col { vertical-align: top; } .recipe-étapes grille tr.k-state-sélectionné .step-order-col, .recipe-étapes grille tr.k-state-sélectionné .step-description-col { vertical-align: milieu; } ' – Rute